Какой способ получить только значение свойства объекта с помощью Windbg?
Я делаю отладку дампа, используя PYKD, и поэтому я использую PYKD
dbgCommand()
для получения информации об объектах.
Проблема в том, что dbgCommand()
результаты должны быть проанализированы для использования, как вы можете видеть в следующем примере:
source code : result = dbgCommand(("dt -c CStringArray m_nSize " + pointer_format) % (ptr)).split(' : ')
example : dt -c CStringArray m_nSize 0x03966ce8
example output :
<application>!CStringArray
+0x008 m_nSize 0n16
Меня интересует только сам размер (0n16
), и я могу проанализировать результат, чтобы получить его, но, поскольку у меня много объектов (около 100 000), это отнимает много времени, поэтому я бы хотел максимально ограничить результат.
Есть ли способ (используя другие параметры отображения, используя другие команды, кроме dt
, используя родные визуализаторы, если необходимо), чтобы получить следующую ситуацию:
dt <options> CStringArray m_nSize 0x03966ce8
0n16 // only that, nothing else
Между тем, я уже продвинулся на один шаг вперед, используя dd
команда, как вы можете видеть:
0:000> dd 0x03966ce8+0x008 L1 // for a CStringArray, m_nSize is at memory address +0x008
// L1 means: limit the amount of answers to one byte
03966cf0 00000010 // the result only contains one line.
Теперь мне нужно только найти способ больше не видеть адрес памяти.
1 ответ
Почему вы не хотите использовать класс typedVar из pykd?
Пытаться:
print( typedVar('CStringArray', address).m_nSize )
0:000> dt -c foo m_nsize
Local var @ 0x2dfdb8 Type CStringArray
+0x008 m_nSize 0n5
0:000> .printf "%x\n" , @@c++(foo.m_nSize)
5
0:000>