首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何了解在特定情况下调试/评测挂起的C#应用程序

如何了解在特定情况下调试/评测挂起的C#应用程序
EN

Stack Overflow用户
提问于 2013-06-13 18:10:03
回答 2查看 209关注 0票数 0

我有一个用C#写的覆盖线程程序(控制台应用程序)

它运行正常长达6 -10小时后,它失败并停止,控制台不关闭,并显示最后一次成功的日志

它将错误日志(所有可能的)写入一个文件。

即使发生IO异常,它也会将其写入Windows事件

Memory Guard和Thread Guard也可以将程序限制到给定的限制。

当它停止时(6-10小时后)什么也没有发生,没有错误日志,心跳,数据库调用,内存使用,我可以看到线程大约产生了70%的最大限制设置。

我知道这可能是内存泄漏,因为线程可能由于数据库调用延迟而无法释放。

我只是想在这个停止的应用程序上工作,以了解确切的问题,比如内存泄漏在哪里,或者哪个调用阻塞。

是否有任何工具可用于此挂起/停止的应用程序?什么应该是正确的继续下去的方式。

我使用了ANTS内存分析器和性能分析器,但所有这些工具都适用于正在运行的应用程序。

我最多只能得到一个内存转储。

欢迎提出建议。

编辑:最初我不想重新运行它等待几个小时来调试,如果没有办法这将是最后的选择。

我尝试附加调试器并放置断点,它显示“断点将不会当前命中...”

EN

回答 2

Stack Overflow用户

发布于 2013-06-13 18:21:04

试试Debug Diagnostics Tool v1.2吧,它能做你需要的事情,并且有一个易于理解的向导来解决不同的问题。

如果您不想使用此工具,我会将调试器附加到挂起的进程中,您至少应该能够看到哪些线程仍在运行,以及在哪个模块中

票数 0
EN

Stack Overflow用户

发布于 2013-06-13 18:21:25

首先,您应该在事件查看器中进行查看。然后,如果您的应用程序在没有日志的情况下崩溃,可能是由于未处理的异常。将以下代码放入main方法中:

代码语言:javascript
复制
Application.ThreadException += (sender, arg) => { log.Error("Unhandled exception : "+e.Exception);};
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17084421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档