Использование Pykd с SOS

Я хотел сделать следующее в PyKd: выполнить команду другого расширения и обработать его вывод.

Прежде всего, кажется, что я должен загрузить SOS в PyKd, а не в WinDbg. Я сделал это с

>>> print(loadExt("C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos.dll"))
59323328

Затем я хотел выполнить вызов на добавочный номер, как это:

>>> print(callExt(59323328, "!dumpheap -stat", ""))

(Третий параметр не задокументирован в API.)

Тем не менее, это дает мне ошибку

The call to LoadLibrary(C:\Windows\Microsoft.NET\Framework64\2.0.50727\sos.dll) failed
Win32 error 0n126
"The module could not be found."
Please check your debugger configuration and/or network access.

Я делаю все это в течение !pycmd командная строка

Как я могу вызвать команды SOS из PyKd и обработать вывод?

Версии:

WinDbg 9.2.9200.16384 x64
отладка 64-битного приложения
Pykd 0.2.0.26 64 бит
Python 2.7.3

2 ответа

Решение

Вы можете использовать сахар Python:

loadExt (r "C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ sos.dll")

О выходной длине см. Трекер проблем pykd, я оставил комментарий.

Глупая ошибка, я должен избегать таких путей:

>>> print(loadExt("C:\\Windows\\Microsoft.NET\\Framework64\\v2.0.50727\\sos.dll"))
Другие вопросы по тегам