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
Создайте ключи, ведущие к
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Python\PythonCore\3.7-32\InstallPath
там и установите(Default)
кc:\python37_x86\
(обратная косая черта в конце важна!)Точно так же создайте ключи, ведущие к
HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.6\InstallPath
там и установите(Default)
кc:\python36_x64\
- К сожалению,
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"
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).