11

我们正在尝试使用 windbg 分析 w3wp 内存转储,我们发现 w3wp 进程由于堆栈溢出而崩溃。我加载了 psscor4.dll 并通过发出 !clrstack 获得了调用堆栈。但我也想知道传递给方法的参数。如果我发出“!clrstack -p”或“!clrstack -a”,我们将获得所有参数和局部变量的<no data>。任何想法,为什么我们得到 <no data> 而不是参数和局部变量的实际值?

4

2 回答 2

15

这就是调试优化代码的乐趣。如果你使用 !sosex.mdv,你至少会得到你的 locals/args 的数据类型。然后你可以运行 !sos.dso 或 !sosex.mdso 来查看堆栈上的对象及其类型。以这种方式追踪论点通常并不难,尽管它并不总是有效。

于 2012-05-09T16:54:36.577 回答
10

如果您正在运行发布版本,您通常无法跟踪本地变量和参数,因为它们已被优化并存储在寄存器中。如果你真的需要它,你可以查看 JIT 编译的代码并找到寄存器中的值,但这可能需要大量的簿记。

于 2012-05-09T14:54:19.457 回答