! Локальные переменные ClrStack - тип значения или ссылочный тип

Как я могу определить, является ли локальная переменная типом значения или ссылочным типом?

0: 000>! CLRStack -a
Идентификатор потока ОС: 0xf74 (0)
Child-SP RetAddr Call Site
0000000000e9c0 000007fef6b32012 ConsoleApplication2.Program.Main(System.String[])
ПАРАМЕТРЫ:
args = 0x00000000028f3c70
LOCALS:
0x000000000023e9e0 = 0x0000000000000000
0x000000000023e9e8 = 0x00000000028f3c90
0x000000000023e9f0 = 0x00000000000493e0

1 ответ

Решение

Самый простой способ определить это с помощью расширения sosex. Команда !mk -l может дать вам адрес памяти, а также тип. Вот пример, где s это структура, а c это класс

0a:M 002aec64 004700f3 ConsoleApplication1.Program.Main(System.String[])(+0x27 IL)(+0x83 Native) [C:\Users\nsrinivasan\Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs, @ 90,17]
     [L0]:s:VALTYPE (MT=001a3884, ADDR=002aec70) (MyStruct)
     [L1]:c:0x0276c098 (MyClass)

Также у sosex есть несколько классных вещей, которых так не хватает.

Другие вопросы по тегам