我有一个用C#写的覆盖线程程序(控制台应用程序)
它运行正常长达6 -10小时后,它失败并停止,控制台不关闭,并显示最后一次成功的日志
它将错误日志(所有可能的)写入一个文件。
即使发生IO异常,它也会将其写入Windows事件
Memory Guard和Thread Guard也可以将程序限制到给定的限制。
当它停止时(6-10小时后)什么也没有发生,没有错误日志,心跳,数据库调用,内存使用,我可以看到线程大约产生了70%的最大限制设置。
我知道这可能是内存泄漏,因为线程可能由于数据库调用延迟而无法释放。
我只是想在这个停止的应用程序上工作,以了解确切的问题,比如内存泄漏在哪里,或者哪个调用阻塞。
是否有任何工具可用于此挂起/停止的应用程序?什么应该是正确的继续下去的方式。
我使用了ANTS内存分析器和性能分析器,但所有这些工具都适用于正在运行的应用程序。
我最多只能得到一个内存转储。
欢迎提出建议。
编辑:最初我不想重新运行它等待几个小时来调试,如果没有办法这将是最后的选择。
我尝试附加调试器并放置断点,它显示“断点将不会当前命中...”
发布于 2013-06-13 18:21:04
试试Debug Diagnostics Tool v1.2吧,它能做你需要的事情,并且有一个易于理解的向导来解决不同的问题。
如果您不想使用此工具,我会将调试器附加到挂起的进程中,您至少应该能够看到哪些线程仍在运行,以及在哪个模块中
发布于 2013-06-13 18:21:25
首先,您应该在事件查看器中进行查看。然后,如果您的应用程序在没有日志的情况下崩溃,可能是由于未处理的异常。将以下代码放入main方法中:
Application.ThreadException += (sender, arg) => { log.Error("Unhandled exception : "+e.Exception);};
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);祝好运
https://stackoverflow.com/questions/17084421
复制相似问题