使用Visual Studio 2010将.dmp文件调试到特定的源代码行

时间:2013-02-20 05:34:01

标签: c# asp.net iis-7 windbg visual-studio-debugging

我有一个来自mvc4 web api的转储文件,它几乎崩溃了w3wp.exe进程(这些位基于调试版本)。我启动了diag debug diag来获取.dmp,并且.dmp文件的崩溃报告的.net stack .html摘要的一部分引用了我的一些可能怀疑的方法,包括缓存对象和db由于systemobject dispose而以某种方式崩溃的上下文(当我引用某些内容时,某些东西超出了范围......无论是缓存还是db上下文还是两者都有)。这些项目包含在.html .dmp报告的列表摘要中是有道理的,但它们实际上并没有告诉我代码在哪里投掷。

当我尝试在Visual Studio中加载它以调试并链接回源代码时,手头有.dmp文件,我收到以下错误:

  

1)无法找到或不匹配w3wp.exe的调试信息。   加载符号(删除源信息)。你想继续吗   调试?

继续选择...

  

2)0x000007fefdc3cacd(KERNELBASE.dll)中的未处理异常   w3wp_ MyApp的 _PID_ 36504 _Date__02_14_2013__Time_04_32_57PM_ 276 _First   偶然异常0XE0434352.dmp:0xE0434352:0xe0434352

我已经检查了Debug / General“微软符号服务器”,大概是按照任何必要的符号和链接。但是,当我在最后一个错误之后继续并中断时,在调用堆栈或Debug / Windows / Paralell堆栈中没有对我的代码的引用,但我没有看到我的任何类或对象被调用或拼写出来。所有人都看到了偏移和拆卸时用carret作为某些“mov”操作的断点。

我已按照此故障排除/调试链接进行预订,但仍无法获取任何符号以解析为本地人或查看我的任何方法名称被调用。 http://blogs.msdn.com/b/tess/archive/2009/06/16/first-look-at-debugging-net-4-0-dumps-in-visual-studio-2010.aspx

问:我如何将此.dmp链接到投掷的确切代码行?谢谢!

1 个答案:

答案 0 :(得分:1)

  • 将它装入windbg。
  • 加载sos(在.NET 4 .loadby sos clr或以前的版本中.loadby sos mscorwks
  • !Threads

此时您应该在相关线程中看到异常。如果没有,您可能需要使用!DumpHeap -type Exception或类似内容进行搜索。

  • 使用!pe <address>检查异常。

如果你迷路,我很乐意帮忙。 Windbg并不容易。