#python #gdb
#python #gdb
Вопрос:
Как мне добавить файл python, который будет загружаться при запуске gdb
? Например, в качестве теста я добавил:
# /home/ubuntu/lib/python3.6/site-packages/objfile-gdb.py
print ("Hello")
Однако, когда я пытаюсь загрузить это, похоже, это не работает:
(gdb) set auto-load scripts-directory /home/ubuntu/lib/python3.6/site-packages
(gdb) info auto-load python
No auto-load scripts.
Как вы должны правильно загрузить это? Я использовал это as a reference
.
Комментарии:
1. Существует несколько различных видов автоматической загрузки. Вы хотите, чтобы скрипт запускался, когда вы направляете gdb для отладки файла с именем
objfile
, или вы хотите, чтобы скрипт запускался при каждом запуске gdb?2. @MarkPlotnick в скрипте есть множество вспомогательных функций, позволяющих делать такие вещи, как простая печать стека (так, как я хочу) и другие подобные вещи. Таким
objfile
образом, это просто вспомогательный файл, который должен загружаться приgdb
каждом запуске.
Ответ №1:
Если все, что вы хотите, это добавить вспомогательные функции для каждого сеанса gdb, гораздо проще загрузить ваш скрипт на python с source
помощью файла инициализации пользователя gdb, обычно ~/.gdbinit
:
source /home/ubuntu/lib/python3.6/site-packages/objfile-gdb.py
Если вы все еще хотите использовать автозагрузку в стиле «objfile-gdb.ext», вы должны следовать соглашению об именовании скриптов:
имя скрипта формируется путем обеспечения того, чтобы имя файла objfile было абсолютным, после всех символических ссылок и разрешения . и .. компоненты и добавление суффикса -gdb.ext . Если этот файл существует и доступен для чтения, GDB оценит его как скрипт на указанном языке расширения.
Например, если вы хотите загрузить скрипт для сеанса, как gdb /usr/bin/tree
, скрипт должен быть размещен /home/ubuntu/lib/python3.6/site-packages/usr/bin/tree-gdb.py
, кроме того, вам, вероятно, нужно настроить auto-load safe-path
конфигурацию.