如何调试和检测挂起问题

时间:2011-02-16 14:55:41

标签: winforms visual-studio-2008 debugging multiple-monitors hang

我正在测试我的应用程序(Windows 7,WinForms,Infragistics控件,C#,。Net 3.5)。 我有两台显示器,我的应用程序保存并恢复表格在第一台或第二台显示器上的位置。所以我实际关闭了第二台显示器,并在Windows显示设置窗体的屏幕分辨率上将其禁用。我需要知道我的应用程序可以将窗口位置(对于那些保存在第二台显示器上的窗口)恢复到第一个窗口位置。

我关闭了第二台显示器,然后按“检测”以应用硬件更改。

enter image description here

然后Windows关闭第一台显示器几秒钟以应用新设置。当第一个监视器屏幕回来时,我的应用程序没有响应。我的应用程序是在调试模式下启动的,所以我尝试通过堆栈和线程(Visual Studio 2008)导航,暂停应用程序,启动并没有找到任何可以帮助我理解为什么我的应用程序没有响应的东西。有人可以帮助我如何发现问题的根源。

2 个答案:

答案 0 :(得分:1)

您应该提供有关您在调用堆栈和线程窗口中看到的内容的更多信息。哪些线程正在运行?你有没有看到在睡觉或加入时等待的东西?你有没有试过命名你的线程,以便更清楚你暂停时发生了什么(虽然没有必要,因为你可以从调用堆栈中获取这些信息......这很方便)。

答案 1 :(得分:1)

下载Debugging Tools For Windows,然后在hang mode中运行adplus。生成的.dmp文件在windbg中打开并调用:

!analyze -v -hang