2

我正在尝试在 Windows 7 x64 上使用 WinDbg 调试 .NET 4 32 位(在项目选项中明确设置)应用程序,步骤如下:

  • 启动我的应用程序(让它成为 foo.exe)
  • 在windbg.exe上启动x86版本
  • 附加到 foo.exe
  • .loadby sos clr
  • !dumpheap -stat

之后我得到这个:

Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of clr.dll is 
                in the version directory
            3) or, if you are debugging a dump file, verify that the file 
                mscordacwks_<arch>_<arch>_<version>.dll is on your symbol path.
            4) you are debugging on the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                machine.

怎么了?我搜索了很多..这个问题看起来是关于内存转储的:无法加载数据访问 DLL,0x80004005 但我正在尝试调试正在运行的应用程序。

4

2 回答 2

3

DAC 是 SOS 用来与托管运行时对话的层。如果由于某种原因无法找到正确的版本(或者如果您的调试器已过时),您将看到此消息。如果您执行 a .cordll -ve -u -l,您将获得有关它正在尝试加载的版本的更多信息,并且您应该能够从那里进行故障排除。

于 2012-05-16T15:12:21.353 回答
2

最后,我使用 Visual Studio 即时窗口而不是 WinDbg 来调用 SOS 函数(dumpheap 等):http: //msdn.microsoft.com/en-us/library/bb190764.aspx

于 2012-05-15T10:18:44.430 回答