c#程序没有响应,我怎么知道它在哪里

时间:2012-09-26 19:12:19

标签: c#

我是一位非常有经验的C / C ++开发人员,负责接管一个c#程序。有问题的程序会运行一段时间,然后变得没有响应。我如何找到它被锁定的位置?

3 个答案:

答案 0 :(得分:3)

如果您可以在调试器下运行它,只需将其分解,然后查看所有线程的堆栈跟踪 - 尤其是主线程。那应该告诉你它挂在哪里。

答案 1 :(得分:1)

在调试时运行程序,然后在它开始挂机时单击IDE上的暂停,看看花了这么长时间。根据应用程序的类型UI,您可能希望为应用程序添加一些线程

答案 2 :(得分:0)

如果它是一个正在运行的程序,你可以 ATTACH 一个调试器,并使用它来打破它的执行,通过查看callstack找出程序当前的位置。

如果您可以自己启动程序,则在调试器下运行该程序。您可以随时进入其执行,检查其状态(特别是通过查看callstack),然后继续执行。

如果您无法访问运行程序的调试程序,请使用“任务管理器”创建程序转储,然后通过加载转储来检查WinDbg.exe中的转储。您可以使用!analyze -v让WinDbg.exe为您提供程序当前所在位置的调用堆栈。