GDB автоматизирует команды после загрузки символов - PullRequest
3 голосов
/ 15 марта 2019

Я отлаживаю микроконтроллер с пультом GDB.У меня несколько целей сборки, и я хотел бы иметь один общий файл .gdbinit для перепрошивки и / или отладки всех различных целей.

Я запускаю GDB со сценарием BAT, в котором указан отлаживаемый файл .elf.в качестве параметра для ГБД.Таким образом, GDB будет загружать символы, а также мой .gdbinit работает правильно.

Мой gdbinit:

define target hookpost-remote
    echo POST TARGET REMOTE\n
    # do stuff
    #load ./path/to/foo.elf # I don't want this
    load # This works if and only if the .elf has been loaded already
    monitor reset
    quit
end

target remote tcp:localhost:2331

Проблема заключается в том, что gdbinit запущен, а команда target remoteвыдается до загрузки двоичного файла, и GDB выдаст ошибку:

.gdbinit:15: Error in sourced command file: No executable file specified. Use the "file" or "exec-file" command.

И сразу после этого:

Reading symbols from path/to/foo.elf

Все работает, если я удаляю команду "target remote" из gdbinit ивызывать его вручную в консоли GDB, но я не хочу этого делать, я хочу автоматизировать все.

Как я могу автоматизировать команды после загрузки символов?Есть ли какой-нибудь хук, который срабатывает после завершения инициализации GDB и после запуска gdbinit?Могу ли я подключиться, чтобы опубликовать Чтение символов?

1 Ответ

3 голосов
/ 16 марта 2019

Возможно, вы используете .gdbinit для целей, в том числе для тех, которые лучше выполнить с помощью командного файла, передаваемого параметром командной строки -x [cmds_file].

Небольшой эксперимент показывает, что .gdbinit запускается до загрузки программного файла, в то время как файл -x запускается после .

...