4

在一个 C# 项目中,我在 UnhandledException 处创建了 minidump。在我的开发机器中,项目源和 bin 在路径 K:\projects\*MYPROJECT* 下,如果我设法让它在我的开发机器中崩溃,一切正常,我可以打开 minidump 文件并正确查看源代码,调用堆栈, 线程等

最终用户的程序路径显然会有所不同;例如,在我们的测试机项目中安装在 C:\*MYPROJECT* 下。它与 pdb 符号文件一起部署。无论如何,当我尝试在我的开发计算机(我有源文件)上打开在该机器上生成的 minidump 时,Visual Studio 尝试在“测试路径”下找到可执行文件和 pdb 文件(C:\*MYPROJECT* ) 当然没有找到它。

我尝试将符号路径设置为包含 K:\projects*MYPROJECT* 而没有任何结果,因此我重新创建了相同的测试目录结构,创建 C:\*MYPROJECT* 并在该目录下复制 .exe 和 .pdb 文件。现在,Visual Studio 能够找到它们,但它说“符号文件中没有本机符号”,并且它没有让我看到任何源代码。

我怎样才能完成加载正确的符号?

4

2 回答 2

0

要更改目录,Microsoft 描述打开即时窗口并键入.exepath [path]来更改它。

您还可以使用.srcpath [path].sympath [path]

于 2014-01-10T12:40:13.733 回答
0

终于找到了解决办法。

经过数周试图弄清楚我缺少什么后,我发现在我的开发机器上我有一个不同的框架版本(详细地说,我在测试机器上有 v4.0.30319.18444 和 v4.0.30319.17929)。我仍然不明白为什么在没有确切框架版本的情况下我不能调试我的应用程序,但解决方案是复制 mscordacwks.dll 和 mscordbi.dll(它们都在 C:\Windows\Microsoft.dll 中找到。 NET\Framework) 从测试机器到 minidump 所在的文件夹。

参考: SP1 中的托管小型转储调试

于 2014-06-13T09:26:32.977 回答