使用WinDbg
调试.NET转储,命令!clrstack
会收到警告:
*** WARNING: Unable to verify checksum for PresentationFramework.ni.dll.
我已将符号路径设置为SRV*D:\MsSymbols*http://msdl.microsoft.com/download/symbols
。如何解决此警告以及如何加载匹配的SOS和CLR?
答案 0 :(得分:1)
*.ni.dll
是本机映像,即由ngen.exe
为您的PC预编译的.NET DLL。由于这是在您的计算机上编译的,因此不会有从Microsoft服务器下载的符号。无需担心。
关于SOS和MSCorDacWks的版本,它有点依赖。
a)您使用.load x:\path\to\sos.dll
加载了特定版本。在这种情况下,请尝试使用.loadby sos clr
加载SOS。如果有效,你很幸运。
b)如果您已经加载了.loadby sos clr
的SOS,则已在其他计算机上创建了故障转储。在这种情况下,您需要获得SOS和MSCorDacWks的确切版本。这可以通过
b.1)运行.unload sos
和!analyze -v
。如果经常下载正确的SOS版本并将其存储在符号路径中的某个位置。
b.2)转到机器并手动查找文件
b.3)使用MsCorDacWks Collector并在该机器上运行它。它将获取所有可用版本的SOS和MSCorDacWks。免责声明:我是该工具的作者。
b.4)如果机器不再可用,请查看我的SOS archive。这次你不走运,但至少有一个非常接近的版本4.7.2116。免责声明:我是该档案的维护者。