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

本文关键字:调试 文件 Studio Visual 2010 dmp 使用 | 更新日期: 2023-09-27 18:00:17

我有一个来自mvc4 web api的转储文件,它几乎会破坏w3wp.exe进程(这些位基于调试构建)。我启动diag-debug diag来获取.dmp,.dmp文件的崩溃报告的.net stack.html摘要中有一些部分引用了我的一些方法,这些方法可能是可疑的,包括缓存对象和数据库上下文,它们由于系统对象处置而以某种方式崩溃(当我引用某些东西时,某些东西超出了范围…缓存或数据库上下文,或者两者都引用)。这些项目包含在.html.dmp报告的列表摘要中是有道理的,但它们并没有告诉我代码在哪里。

有了.dmp文件,当我试图在Visual Studio中加载它进行调试并链接回源代码时,我得到了以下错误:

1) 找不到w3wp.exe的调试信息或调试信息不匹配。已加载符号(源信息已剥离)。是否要继续调试?

继续选择。。。

2) 中0x000007fefdc3cacd(KERNELBASE.dll)处出现未处理的异常w3wp_MyApp_PID_36504_Date__02_14_2013__Time_04_32_57PM_276_First机会异常0XE0434352.dmp:0x0434352:0x0434352

我已经检查了Debug/General"microsoft符号服务器",大概可以关闭任何必要的符号和链接。然而,当我在最后一个错误后继续并中断时,调用堆栈或Debug/Windows/Paralell堆栈中没有引用我的代码,但我没有看到我的任何类或对象被调用或拼写出来。所看到的只是偏移和在某个"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链接到正在抛出的确切代码行?谢谢

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

  • 把它装进风箱里
  • 加载sos(在.NET 4 .loadby sos clr或以前的版本.loadby sos mscorwks中)
  • !Threads

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

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

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