使用windbg(或mscordmp)为托管(.net)应用程序创建转储文件

时间:2010-01-20 17:58:36

标签: .net windbg

我正在研究为托管进程创建转储文件。

我知道我可以使用windbg来创建转储文件,但是我想知道它们是否是我应该传递给“.dump”命令的任何特殊标志,因为它是托管应用程序而不是本机应用程序。

一个相关的问题:我听说过一个名为mscordmp.exe的工具(如果你谷歌它,你可以在网上找到它)。 mscordmp仍然相关吗?我无法在任何地方找到它的下载点,但我认为它可能更适合转储托管内存而不是windbg。

2 个答案:

答案 0 :(得分:4)

您应该使用/ ma创建完整内存转储。 否则,sos会抱怨托管分析将非常有限。

答案 1 :(得分:0)

不,没有任何与托管应用程序相关的特殊标志,windbg只是创建内存转储,它是原始数据。分析工具的目的是了解您的转储是为托管应用程序创建的还是非托管应用程序。

如果谈到分析托管应用程序,您可以执行以下步骤:

  1. 附加windbg以处理正在运行的托管应用程序
  2. 运行.dump /ma <outputfilename.dmp>。它会创建转储文件,此操作可能需要几分钟,具体取决于进程占用的内存。 /ma标志命令创建所有选项启用的附加进程的完全内存转储(它不是完整的系统转储,只是附加的进程)。
  3. 从进程中分离,它可以继续运行,同时您可以将转储文件加载到windbg并进行分析。
  4. sos.dll是用于分析托管应用程序的常见windbg扩展程序。
  5. P.S。使用.load sos.dll启用sos.dll可能会出现问题,在这种情况下,您可以尝试.loadby sos mscorwks