2011-05-16 53 views
5

我在Windows服务器2008上运行调试诊断工具。它创建了转储文件。 因为我的asp.net应用程序有时会发生异常。如何调试崩溃的转储文件?

我需要一步一步的指令如何调试转储文件。我是否需要在生产服务器或本地进行调试?我需要什么?如何配置?

如何确定应用程序中的问题?

如何阅读转储文件还有其他方法吗?

这里是我发现它有大约转储文件相当不错的解释后,但他们并没有解释调试部分

http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx

回答

9

所有你需要调试转储WinDbg的,这可以从以下网址下载Microsoft和随框架一起提供的SOS。

启动WinDbg并从文件菜单中加载转储文件。这会告诉你一些关于转储的初始信息。这会告诉你你正在看的那种转储。

使用命令.symfix设置符号。

使用命令.loadby sos clr(.NET 4)或.loadby sos mscorwks(以前版本的.NET)加载SOS。

使用!threads命令查看转储文件中的线程。注意最右边的例外栏。如果您在此列中发现任何异常,请使用!pe <EXCEPTION OBJECT>命令获取详细信息。

欲了解更多信息,请阅读Tess' blog上的一些帖子。

+0

Brian我在我的服务器上有每个文件大约400 MB的DMP文件。我在本地机器windbg上安装。在我试图打开其中一个文件后,我得到了这个错误 - ***错误:无法找到符号文件。默认为kernel32.dll导出符号 - kernel32!RaiseException + 0x58 :.我可以在服务器上使用windbg吗?如何加载符号? – 2011-05-16 18:52:29

+0

@Michael:你可以在服务器上使用WinDbg,你不需要安装任何东西。只需从USB棒或网络共享中复制或运行WinDbg即可。 .symfix命令将指示WinDbg从Microsoft符号服务器获取符号。如果在调试时无法访问互联网,则可以下载符号。详情请参阅WinDbg帮助。 – 2011-05-17 03:30:41

1

我认为你的问题没有简单的答案,因为有这么多不同的场景。

然而,我可以给你一些基本的流程,但你需要一定要看书或网站来找到更多的信息。

首先,如果您有该应用程序的pdb文件和源代码,请尝试加载它们并将它们指向源代码。 一旦你有他们,尝试通过输入'lm'来查看所有加载的模块,如果你没有看到你的模块,你可以通过输入'.reload/f your-module.exe'来加载它。

二,在windbg中加载崩溃转储后,请尝试'analyze -v'命令。

如果您配置正确,windbg可能会指出确切的源代码行,它面临崩溃。

最后,当您配置符号时,还请添加Microsoft符号服务器以简化您的调试会话。

有很多书籍和网站,你可以帮忙,但我认为codeproject教程系列是相当不错的。

这是第一个系列。 http://www.codeproject.com/KB/debug/cdbntsd.aspx