Какой способ получить только значение свойства объекта с помощью Windbg?

Я делаю отладку дампа, используя PYKD, и поэтому я использую PYKDdbgCommand() для получения информации об объектах.

Проблема в том, что 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>
Другие вопросы по тегам