Какой способ получить только значение свойства объекта с помощью Windbg? - PullRequest
0 голосов
/ 08 ноября 2018

Я делаю отладку дампа, используя 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 Ответ

0 голосов
/ 08 ноября 2018

Почему вы не хотите использовать класс typedVar из pykd?

Попытка:

print( typedVar('CStringArray', address).m_nSize )
...