我们有一个运行在某些 PC 上的 .NET 2.0 应用程序(全球化:英语/德语)。
过去几天,应用程序抛出未处理的异常并且应用程序崩溃。我没有要调试的源代码。应用程序日志和事件查看器没有用。例外并没有说太多。
有什么方法可以在没有源代码的情况下调试并找到异常原因?
提前致谢
卡尔提克
我们有一个运行在某些 PC 上的 .NET 2.0 应用程序(全球化:英语/德语)。
过去几天,应用程序抛出未处理的异常并且应用程序崩溃。我没有要调试的源代码。应用程序日志和事件查看器没有用。例外并没有说太多。
有什么方法可以在没有源代码的情况下调试并找到异常原因?
提前致谢
卡尔提克
尝试使用http://www.reflector.net/之类的 .NET 反编译器或来自http://digitalbodyguard.com/的出色 Graywolf获取源代码(Graywolf 受限于非商业用途的许可,因此它可能不会是您的选择)
您可以使用http://wiki.sharpdevelop.net/ILSpy.ashx反编译代码并获取代码。但实际上应用程序中应该有适当的错误日志记录。其中还详细说明了有效位置的内部异常,这将使您更好地了解失败的原因。
您可以使用 WinDbg 来处理故障转储或在进程崩溃时附加到该进程。托管代码中有足够的类型信息可以让您有效地进行调试。
WinDbg.exe -I
将其注册为系统上的崩溃处理程序。附加 WinDbg 后,以下命令应该会有所帮助:
.loadby sos clr
加载 CLR 调试扩展!pe
转储异常详细信息。~#s
切换到异常线程!clrstack
转储线程的堆栈我将从内存转储开始。ProcessExplorer可以获取进程的内存转储。
您可以使用Mdbg或 Windbg 来调试您的进程。要获取更多信息,您应该使用 PDB 文件。那是一种有用的情况。
您可能会在其他答案中找到源代码。请注意,ILSpy 和 Reflector 能够同时调试和反编译...