调试Windows窗体线程冻结

时间:2011-04-15 05:07:39

标签: c# debugging com

我有一个C#winforms应用程序,它与各种com数据源进行通信,并使用线程池进行大部分后端处理。我注意到每天2-3次winforms线程挂起20-30秒(在ui中可见,并且com数据停止20-30秒)。我已经在线程池上编写了一个简单的任务,它跟踪winforms线程上的心跳以检测这些实例,但我正在寻找一种方法来自动触发完全转储(而不是小型转储),以便我可以看到究竟是什么winforms线程在这些暂停期间正在做。

是否有任何简单的命令行应用程序,我的后台线程可以调用它自己的进程作为调试器绑定到应用程序,生成完整的转储文件,然后允许应用程序恢复?

有没有更好的方法来调试它?

2 个答案:

答案 0 :(得分:0)

听起来像Process Dumper应该可以解决问题。

答案 1 :(得分:0)

您可以使用SysInternals procdump实用程序生成转储文件:

  

ProcDump是一个命令行实用程序   其主要目的是监控   应用CPU峰值和   在峰值期间生成崩溃转储   管理员或开发人员可以   用来确定原因   尖峰。