!clrstack -p没有给出调用堆栈中方法的参数值

aru*_*rul 11 windbg sos

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

Ste*_*son 15

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


Bri*_*sen 10

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