我有用C#编写的mulch-threaded程序(控制台应用程序)
它可以运行6到10个小时之后它会失败并停止,控制台不会关闭并显示上次成功的日志
它在文件中写入的错误日志(所有可能)。
如果发生IO异常,则将其写入Windows事件
还有Memory Guard和Thread Guards将程序限制到给定限制。
当它停止时(6-10小时后)没有任何错误记录,心跳,数据库调用,内存使用情况,我可以看到线程产生的最大限制设置为70%左右。
我知道这可能是内存泄漏,因为由于数据库调用延迟,线程可能无法释放。
我只是想在这个已停止的应用程序上工作以了解确切的问题,例如内存泄漏或哪个调用阻塞。
是否有可用于此挂起/停止的应用程序的工具?应该采取什么样的正确方法。
我使用的是ANTS内存pro-filer,性能专业版,但所有这些工具都可用于运行应用程序。
我能得到的最多的是记忆转储。
欢迎提出建议。
编辑: 最初我不想重新运行它等待数小时进行调试,如果没有办法可以作为最后一个选项。
我试图附加调试器并放置断点,它说“断点当前不会出现....”
答案 0 :(得分:0)
尝试Debug Diagnostics Tool v1.2它完全符合您的需求,并且针对不同的问题提供了易于理解的向导。
如果您不想使用此工具,我会将调试器附加到挂起进程,您应该能够看到至少哪些线程仍在运行以及在哪个模块中
答案 1 :(得分:0)
首先,您应该查看事件查看器。 然后,如果您的应用程序崩溃而没有日志,则可能是由于未处理的异常。 将以下代码放在main方法中:
Application.ThreadException += (sender, arg) => { log.Error("Unhandled exception : "+e.Exception);};
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
祝你好运