2

我正在尝试自动化打开托管应用程序的崩溃转储和检索堆栈跟踪的过程。Windgb 有时可以工作,但让它加载正确版本的 sos.dll 是一场噩梦,除非处理转储的机器实际上与发生转储的机器相同。

另一方面,Visual Studio 可以简单地完成这项工作。我打开转储,转到即时窗口,然后键入

.load \\<machine where dump occured>\c\windows\microsoft.net\framework\v2.0.50727\sos.dll

!clrtsack 

一切都很好。

我可以在 Visual Studio 中编写此过程的脚本吗?如果没有,Visual Studio 使用的后端调试器是否与 Windbg 相同?

4

1 回答 1

1

.load您可以使用该命令代替将完整路径传递给命令.loadby,以向 WinDbg 提供有关 DLL 应位于何处的提示。
该命令接收两个参数:

  1. 您要加载的 DLL 的名称(在您的情况下为SOS
  2. 已加载 DLL 的名称,应包含在与第一个请求的 DLL 相同的文件夹中(在您的情况下,clr对于 .Net v4.0 或mscorwks更早版本)。

例如:

// v4.0
>.loadby sos clr

// earlier versions
>.loadby sos mscorwks
于 2010-09-14T21:57:48.533 回答