如何在程序崩溃时调试程序无异常?

时间:2010-09-25 04:09:05

标签: c# visual-studio debugging

我的一个程序会定期崩溃,但我不知道为什么。我在调试模式下运行它,但没有弹出任何东西。该计划突然退出。我有其他错误会引发异常...但不是这个。是否有一种神奇的方式来捕捉它或什么?

3 个答案:

答案 0 :(得分:8)

据推测,您是在Visual Studio中运行它,并且由于某种原因,它没有在未调试的异常中停止在调试器中,在这种情况下,您可以尝试从Visual Studio外部捕获崩溃。请参阅我在System.AccessViolationException from unmanaged code?的回答,特别是how to capture a crash dump

如果它只是定期崩溃,但在相当短的时间内,请从Sysinternals procdump开始。从Visual Studio外部启动可执行文件,然后运行:

procdump -e <YourExecutableNameOrPid>

并等待它收获崩溃转储 - 假设它由于未处理的异常而退出 - 然后将崩溃转储加载到VS 2010或WinDbg。

答案 1 :(得分:4)

  

该程序突然退出

一定要检查你的代码或你使用的其中一个库是不是调用exit()(是的,这可能听起来太简单了,但是我们曾经失去了几个小时跟踪随机程序关闭回到exit()调用..)。如果是这样,在那里放置一个断点或改为throw(),然后再次运行。如果没有,肖恩的答案似乎是合法的。

答案 2 :(得分:1)

您可以在以下类似帖子中找到更多建议:Third-party dll crashes program with no exception thrown