0

我有一个用 Visual Studio 2005(非托管 C++)生成的 .dll 文件。在 DLL 中的各种函数中,我可以检测错误并调用 DLL 中的另一个函数来生成 minidump(使用 dbghelp.dll)。

当使用 DLL 的应用程序也是 VS2005 生成的程序时,这非常有效。但是,当我使用 National Instrument Measurement Studio/CVI 生成应用程序时(用纯 C 语言,这并不重要),它没有得到 .pdb 文件(惊喜!)。结果,当我用 VS2005 打开生成的 .dmp 文件时,它告诉我应用程序不是通过调试构建的(但它是!)并且显示的堆栈是无用的。

CVI 应用程序成功使用了此 DLL 中的许多 (40+) 其他函数。这似乎表明从非 VS 应用程序成功访问 DLL 函数。

National Instruments 显然可以使用 DrWatson 的完整转储,所以它一定是可能的。

有人知道如何获得使用 .dmp 文件所需的内容吗?

总结一下:没有 .NET,函数访问很好,生成的 minidump 文件似乎不适用于 Visual Studio。

谢谢你的帮助。

4

1 回答 1

0

您必须有符号(至少 dllexports)才能分析转储文件。尝试使用 Windows 调试工具 (WinDBG) 打开 minidump 文件,看看你有什么。WinDBG 比 VisualStudio 2005 在分析转储方面做得更好。

于 2011-01-10T06:29:36.080 回答