我有一个C#winforms应用程序,它与各种com数据源进行通信,并使用线程池进行大部分后端处理。我注意到每天2-3次winforms线程挂起20-30秒(在ui中可见,并且com数据停止20-30秒)。我已经在线程池上编写了一个简单的任务,它跟踪winforms线程上的心跳以检测这些实例,但我正在寻找一种方法来自动触发完全转储(而不是小型转储),以便我可以看到究竟是什么winforms线程在这些暂停期间正在做。
是否有任何简单的命令行应用程序,我的后台线程可以调用它自己的进程作为调试器绑定到应用程序,生成完整的转储文件,然后允许应用程序恢复?
有没有更好的方法来调试它?
答案 0 :(得分:0)
听起来像Process Dumper应该可以解决问题。
答案 1 :(得分:0)
您可以使用SysInternals procdump实用程序生成转储文件:
ProcDump是一个命令行实用程序 其主要目的是监控 应用CPU峰值和 在峰值期间生成崩溃转储 管理员或开发人员可以 用来确定原因 尖峰。