我正在用 GDB 遥控器调试一个微控制器。我有多个构建目标,我希望有一个通用的 .gdbinit 文件用于刷新和/或调试所有不同的目标。
我正在使用 BAT 脚本启动 GDB,其中可调试的 .elf 文件作为 GDB 的参数给出。这样 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 已运行,并且在加载二进制文件之前发出了“目标远程”命令,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
如果我从 gdbinit 中删除“目标远程”命令并在 GDB 控制台中手动调用它,一切正常,但我不想这样做,我想自动化一切。
加载符号后如何自动执行命令?在 GDB 完成初始化和运行 gdbinit 之后,是否会触发某种钩子?我可以挂钩发布阅读符号吗?