! clrstack -p не дает значений параметров для методов в стеке вызовов

Мы пытаемся проанализировать дамп памяти w3wp с помощью windbg, и мы обнаружили, что процесс w3wp сбой из-за. Я загрузил psscor4.dll и получил стек вызовов, выпустив! Clrstack. Но я также хочу знать, что параметры передаются методам. Если я выдаю "! Clrstack -p" или "! Clrstack -a", мы получаем < no data > для всех параметров и локальных переменных. Любая идея, почему мы получаем < no data > вместо фактических значений для параметров и локальных переменных?

Ответ 1

Если вы используете сборку релизов, вы, как правило, не сможете отслеживать локальные и параметры, поскольку они оптимизированы и хранятся в регистрах. Если вам это действительно нужно, вы можете посмотреть скомпилированный код JIT и найти значения в регистрах, но для этого может потребоваться много книг.

Ответ 2

Таковы радости отладки оптимизированного кода. Если вы используете! Sosex.mdv, вы, по крайней мере, получите типы данных ваших locals/args. Затем вы можете запустить! Sos.dso или! Sosex.mdso, чтобы увидеть объекты в стеке с их типами. Обычно не так сложно отследить аргументы таким образом, хотя это не всегда работает.