我正在尝试从应用程序崩溃时由 Watson 博士创建的二进制文件 crash.dmp 中包含的调用堆栈中保存详细信息。
dmp 文件存在,所以我只想在 (c#) 中读取一个并保存调用堆栈(如果可能的话)。有没有人做过这样的事情,确实,这甚至可能吗?
我可以使用 Visual Studio 手动查看 crash.dmp 文件并手动复制堆栈,但我希望此过程在原始程序中自动化。
任何帮助,将不胜感激。
干杯
史蒂夫
我正在尝试从应用程序崩溃时由 Watson 博士创建的二进制文件 crash.dmp 中包含的调用堆栈中保存详细信息。
dmp 文件存在,所以我只想在 (c#) 中读取一个并保存调用堆栈(如果可能的话)。有没有人做过这样的事情,确实,这甚至可能吗?
我可以使用 Visual Studio 手动查看 crash.dmp 文件并手动复制堆栈,但我希望此过程在原始程序中自动化。
任何帮助,将不胜感激。
干杯
史蒂夫
(应该是评论,但是太长了)
既然你也问了这个问题,我有强烈的感觉,这是一个XY 问题。您可能不想阅读此问题中所述的转储,并且您可能不想像其他问题中那样自己编写调试器。我的猜测:您的实际问题是您的程序崩溃并且您想避免这种情况。
您的首选应该是在调试器(Visual Studio)下按播放按钮以调试模式运行程序,然后等到崩溃发生并找出崩溃的真正原因。以某种方式更改您的代码,以便根本不会发生崩溃,例如通过检查是否满足所有先决条件。
如果由于某种原因无法解决问题,那么有一种方法可以防止崩溃。崩溃是由异常引起的,您可以使用异常处理来处理它。在 C# 中,它看起来像这样:
try
{
// force a crash for demo purposes
throw new InvalidOperationException();
}
catch (InvalidOperationException ex)
{
// do something instead of crashing here
}
有关异常处理主题的更多信息,请阅读C# 中的异常处理或在 Internet 上搜索术语try、catch或异常处理。