WinDBG не может найти интерпретатор Python для PyKd

Я пытаюсь загрузить расширение Python для WinDBG, используя PyKd.

.load pykd преуспевает.

Когда я бегу !pyЯ получаю это:

не удалось найти интерпретатора Python

Вещи, которые я пробовал:

  • Разные версии питона

  • Использование dll и pyd файлов PyKd

  • .reload /f

  • Различные пути символов

  • Отладка WinDBG и PyKd, также проходящая через источник, безуспешна

Да, моя среда настроена правильно с путем Python.

Не удалось найти упоминания об этой проблеме в Интернете. Он всегда работал гладко на разных системах и конфигурациях, которые у меня были, но на моей новой системе я получаю это странное сообщение.

Подробности:

Windows 10 Home, версия 1607, x64

WinDBG x86, сборка 10.0.15063.0

Python 2.7.13, но я пробовал и много других версий.

Путь символов: кэш * c: \ symbols; srv * https://msdl.microsoft.com/download/symbols

Dell XPS 15

5 ответов

Парень, я установил последний pykd тоже, и возникают те же проблемы.

Затем я обнаружил, что я не установил Python 2.7 в этой виртуальной коробке.

Установка Python 2.7 будет работать. Вы установили его. Я предлагаю вам проверить, находится ли путь установки python в переменной окружения "path"

У меня возникла эта проблема при наличии нескольких установок python на одном компьютере. Удалось решить эту проблему, вручную создав необходимый ключ реестра, так как я не хотел переустанавливать какие-либо версии python или изменять глобальные переменные path/pythonpath.

Обратите внимание, что вам понадобится x64 python для windbgx64 и x86 python для windbgx86.

Допустим, вы хотите использовать Python 3.7x86 установлен в c:\python37_x86и питон 3.6x64 установлен в c:\python36_x64

  1. Создайте ключи, ведущие к HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\3.7-32\InstallPath там и установите (Default) к c:\python37_x86\ (обратная косая черта в конце важна!)

  2. Точно так же создайте ключи, ведущие к HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.6\InstallPath там и установите (Default) к c:\python36_x64\

  3. К сожалению, PYTHONPATH переменная среды все еще используется и должна соответствовать указанной версии Python(в противном случае вы столкнетесь с Fatal Python error: unable to load the file system codec. ПРИМЕЧАНИЕ: это может быть важно, только если одна из версий - 2.x, а другая - 3.x. Попробуйте заставить его работать без этого шага

Чтобы обойти последнюю проблему, я создал файлы.bat, чтобы изменить среду и запустить windbg с правильной средой.

Например, для запуска 32-битного windbg:

set PYTHONPATH=C:\python37_x86\Lib;[...Rest of the PYTHONPATH for this python version...]
start windbgx -debugArch x86 -c ".load c:\dev\tools\pykd\x86\pykd.dll"

Если у вас нет этого пути к регистру:HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\xx\PythonPath, тогда вы должны установить python-2.7(x64) с включенным Path.

WinDBG x86, сборка 10.0.15063.0 Python 2.7.13, но я также пробовал много других версий.

Вам нужен Python 2.7.13 x86

После установки вы можете проверить его видимость для pykd с помощью команды pykd.info - он должен показать путь к python. Для python 2.7 обычно это C:\windows\system32\python27.dll

Также была такая же проблема, в конце концов, это зависит от того, какую версию windbg вы используете и какие версии python вы установили;

  • Если это windbg x86, вам необходимо установить 32-битный Python.
  • Если это windbg x64, вам необходимо установить 64-битный python.

Мне не нужно было добавлять какую-либо конкретную версию в PATH, у меня в системе 3 версии python; python2.7x86, python2.7x64 и python3x64, и если я запускаю в windbgx86, он распознает оба питона x86, и если я запускаю его в sindbgx64, он распознает питон x64.

Если твой !pykd.info не перечисляет какой-либо питон, вы, вероятно, перепутали их (у вас есть только pythonx86 при запуске windbgx64, или у вас есть только pythonx64 при запуске windbgx86).

Другие вопросы по тегам