如何在Visual Studio 2017中调试.net dmp文件

时间:2017-11-27 14:31:04

标签: c# .net visual-studio debugging

作为Windows服务实现的我的服务每2周+某些天在客户服务器上崩溃。

  • 该服务以.net(vb.net/c#)
  • 编写
  • 编译为any-cpu
  • 不喜欢32位
  • .net Framework 4.5.2
  • 在64位cpu的服务器上运行
  • Visual Studio是2017专业版

由于我无法重现问题,我想调试转储文件。

我确实根据https://msdn.microsoft.com/en-us/library/windows/desktop/bb787181%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

在服务器上设置了用户模式转储

下图显示了我如何在注册表中配置用户模式转储: enter image description here

我可以打开这个转储,但我得到的唯一信息是

  

线程试图读取或写入没有适当访问权限的虚拟地址。   enter image description here

如果我然后开始调试(仅限管理,混合和仅限本机),则会显示以下错误:

  

FooService.exe.3616.dmp中0x000007FEF3FB09AF(clr.dll)的未处理异常:0xC0000005:访问冲突读取位置0x0000000000000000。   enter image description here

为了从.dmp文件中获取更多信息,我需要做什么提示?

1 个答案:

答案 0 :(得分:2)

我想我现在明白了(或多或少)。

我没有保存在编译发布模式文件期间使用的pdb文件,并尝试根据相同的源重新创建这些pdb文件,这似乎不适用于在visual studio中调试minidump。

但是使用来自microsoft的Debug Diagnostic Tool v2 Update 2,我能够根据我已经存在的minidump获取异常的Stack Trace,现在我能够找到错误。

我仍然不明白为什么visual studio无法显示相同的信息。