如何调试挂起的WPF应用程序?

时间:2011-09-15 17:28:57

标签: c# .net wpf windows debugging

我有一个挂在一个用户机器上的WPF应用程序。其他用户不受影响。该应用程序挂起在本地运行的开发环境和在调试下运行。问题可以可靠地再现 - 它只是挂起用户试图做的任何事情。在调试下运行没有提供任何线索,没有抛出异常,应用程序只是停止响应。

我有什么选择来调试它?是否有任何外部工具 - 例如sysinternals套件 - 可以提供帮助吗?是否有任何可能提供更多信息的Visual Studio调试器技巧或提示?

3 个答案:

答案 0 :(得分:2)

是的,您可以使用mdbg.exe附加到挂起进程(PID),当您在那里时按w查看堆栈跟踪。

顺便说一句。挂起可能是由损坏的字体缓存引起的,所以在你尝试mdbg尝试找到关于如何清除WPF字体缓存的指令之前。

答案 1 :(得分:1)

由于这是一个相当笼统的描述,只有一般指示:

  • 在调试器中点击“暂停”并查看它挂起的位置
  • 将系统+驱动程序修补到最新的“稳定级别”
  • 检查您正在使用的任何第三方程序集 也许有一些关于版本和/或配置和/或依赖性的怪癖
  • 使用sysinternal processmon检查应用程序的功能(访问了哪些文件等)
  • 检查网络连接和配置(代理,DNS,防火墙等),如果您的应用使用任何内容(如网络共享或数据库或互联网访问等)。
  • 检查内存(也许机器像疯了一样分页......)
  • 如果您的应用是多线程的,可以有例外“潜伏”=>尝试添加全局处理程序以获取线索(请参阅here
  • 字体问题可能是另一个问题......请参阅here
  • 检查防病毒等等=>这些有时会造成奇怪的行为

上述任何内容都可以让您了解正在发生的事情。

答案 2 :(得分:0)

检查机器的硬件加速。请记住,WPF在可用时使用直接硬件访问进行渲染。您可以尝试降低加速度,更新视频驱动程序等。

这是在运行什么操作系统?如果Windows 7 - 启用Aero?