Сценарий WinDbg, анализирующий псевдоним двойной кавычки

Я работаю над сценарием, который запускает пару команд WinDbg, выводит вывод одних и анализирует другие с помощью .foreach.

Моя проблема в том, что когда я пытаюсь запустить:

0: kd> dt -b -r 0xdeadbeef drivername!DRIVER_DEVICE_CONTEXT

Вывод выглядит примерно так:

   +0x000 variable1 : 5
   +0x004 variable2 : 0
   +0x008 variable3 : 1
   +0x00c variable4 : 1
   +0x010 variable5 : 8
   +0x014 variable6 : (null)
   +0x018 variable7 : 1
   +0x01c table1 :  ""
    [00] 0 ''
    [01] 0 ''
    [02] 0 ''
    [03] 0 ''

...

Создание псевдонима «команда», которая является этой командой, а затем запуск:

.foreach(word {command}) { .echo "word" }

выдаст ошибку:

Syntax error at .echo """"

Есть ли способ просто .continue, если слово "" ??

Запуск al показывает следующее:

  Alias            Value  
 -------          -------
 command          dt -b -r 0xdeadbeef drivername!DRIVER_DEVICE_CONTEXT
 word             ""

person Ross Aiken    schedule 25.09.2013    source источник
comment
Я также разместил это здесь, так как относительно мало людей разбираются в сценариях WinDbg. Я постараюсь синхронизировать эти два. social.msdn.microsoft.com/Forums/en-US/   -  person Ross Aiken    schedule 25.09.2013


Ответы (1)


Попробуйте с одинарными кавычками:

.foreach(word {command}) { .echo 'word' }

Могу ли я порекомендовать вам использовать python с windbg? Это облегчит вам жизнь :)

pykd.codeplex.com

Если он вам не понравится, вы всегда можете вернуть его обратно :).

Например:

DRIVER_DEVICE_CONTEXT = typeInfo( "drivername!DRIVER_DEVICE_CONTEXT" )

for fieldName, fieldType in DRIVER_DEVICE_CONTEXT:
   print fieldName
person pykd team    schedule 26.09.2013
comment
Ну, это работает для эха, но не работает для $spat -- .foreach (word {command}) {.if($spat('','word'){.echo Is}.else{.echo Isnt}} Синтаксическая ошибка в '('','+0x000'){.echo Is}.else{.echo Isnt} Мне нужно узнать о PyKd; я работаю над этим скриптом для кого-то другого, и я не знаю, насколько широко он будет развернут (и если у всех, использующих этот скрипт, есть права администратора для установки Python/PyKd) - person Ross Aiken; 26.09.2013
comment
Хотя ответ, основанный на WinDbg, был бы хорош, это функциональная альтернатива. Принять как лучший ответ (если кто-то не выяснит собственный способ WinDbg) - person Ross Aiken; 27.09.2013
comment
вы можете использовать .catch для игнорирования ошибок: скрипт дойдет до конца - person pykd team; 27.09.2013