我用Microsoft.Diagnostics.Runtime
,并尝试分析崩溃转储,但我没有在我的机器上匹配mscordacwks.dll。Microsoft.Diagnostics.Runtime:如何阅读崩溃转储?
请给我一个建议,做什么或怎样才能得到它从微软的符号服务器?
我用Microsoft.Diagnostics.Runtime
,并尝试分析崩溃转储,但我没有在我的机器上匹配mscordacwks.dll。Microsoft.Diagnostics.Runtime:如何阅读崩溃转储?
请给我一个建议,做什么或怎样才能得到它从微软的符号服务器?
缺少mscordacwks.dll是我不时遇到的一个问题,我不时遇到使用WinDbg查看故障转储文件(我注意到您正在尝试使用ClrMD来实现相同的最终目标)。通常情况下,微软符号服务器是非常全面的,但在mscordacwks.dll的情况下,公共符号服务器上不存在的所有版本(如描述here)。获取匹配的mscordacwks.dll版本的最好方法是将其从创建故障转储的机器(以及相应的.net框架文件夹)中提取,如果公共符号服务器出现故障。
老实说,我更多的WinDbg的用户,所以我更习惯于用mscordacwks处理存在,但对谷歌四处寻找我确实发现了几个有趣的文章。第一个提到的,你可以这样做:
// DataTarget.ClrVersions lists the versions of CLR loaded in the process (this may be
// v2 and v4 in the Side-By-Side case.
ClrInfo version = target.ClrVersions[0];
// CLRVersionInfo contains information on the correct Dac dll to load. This includes
// the long named dac, the version of clr, etc. This is enough information to request
// the dac from the symbol server (though we do not provide an API to do this). Also,
// if the version you are debugging is actually installed on your machine, DacLocation
// will contain the full path to the dac.
string dacLocation = version.TryGetDacLocation();
如果不工作是谁的人发布的代码为DacLocator类,它是更为复杂。希望这两个途径之一应该能够在您需要的dll版本中加载。
ClrVersion类现在有一个TryDownloadDac方法。您需要在与正在调试的应用程序相同的架构中运行流程(64位/ 32位),以便成功将DAC库加载到流程中。
也许这可以帮助你:[如何调试:w3wp.exe进程被终止,由于堆栈溢出(适用于一台机器,但不是另一台)](http://stackoverflow.com/questions/5053708/how-到调试W3WP-EXE-过程被终止 - 由于到一个堆栈溢出,作品上/ 13300623#13300623) –
不幸的是,没有。我不想用WinDb,并尝试使用MSFT库Microsoft.Diagnostics.Runtime – burusera
你找到任何答案吗? –