gpt4 book ai didi

c# - 知道应用程序在什么时候卡住

转载 作者:太空狗 更新时间:2023-10-29 22:35:07 25 4
gpt4 key购买 nike

我正在使用 C# 开发 WinForm 多线程应用程序。有时我的应用程序会挂起、卡住或阻塞。

当发生这种情况并且我在 DEBUG 模式下运行时,是否可以了解我的应用程序当前在哪一行代码?由于它被卡住,我希望找到应用程序被锁定或阻止或其他任何地方的点。有可能这样做吗?

当它被卡住时,我试图打开 CALL STACK 窗口,但这并没有显示任何信息;我可以做些什么吗?一些“暂停并检查”或其他什么?

最佳答案

您可能需要打开线程窗口,并更改当前线程。调试时,选择 Debug->Break All,然后打开 Threads 窗口。如果您遍历每个线程,通过双击线程,您应该能够调查每个线程的调用堆栈。

也就是说,如果您可以在 VS 2010 中运行您的程序 - 这会变得容易得多。在 VS 2010 中,您可以使用新的 Concurrency Profiler,并在 Concurrency Profiler 下运行您的代码,并带有可视化多线程应用程序行为的选项。一旦您的应用程序锁定,将其终止,然后让分析器搅动 -

最终,您将获得一个图表,显示程序中的每个线程,以及它们何时被锁定。将显示每个阻塞线程的调用堆栈,以及持有的锁(带有源代码行)。这使得追踪死锁变得非常容易。

关于c# - 知道应用程序在什么时候卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com