Arm GDB在加载符号后自动执行命令

Arm GDB在加载符号后自动执行命令,arm,gdb,embedded,elf,gdbinit,Arm,Gdb,Embedded,Elf,Gdbinit,我正在用GDB遥控器调试一个微控制器。 我有多个构建目标,我希望有一个通用的.gdbinit文件来刷新和/或调试所有不同的目标 我使用BAT脚本启动GDB,其中debugable.elf文件作为GDB的参数。这样GDB将加载符号,并且my.gdbinit正在正确运行 我的gdbinit: define target hookpost-remote echo POST TARGET REMOTE\n # do stuff #load ./path/to/foo.elf #

我正在用GDB遥控器调试一个微控制器。 我有多个构建目标,我希望有一个通用的.gdbinit文件来刷新和/或调试所有不同的目标

我使用BAT脚本启动GDB,其中debugable.elf文件作为GDB的参数。这样GDB将加载符号,并且my.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
如果我从gdbinit中删除“target remote”命令并在GDB控制台中手动调用它,那么一切都会正常工作,但我不想这样做,我想自动化一切


加载符号后,如何自动执行命令?在GDB完成初始化并运行gdbinit之后,是否有某种钩子触发?我可以挂接读后符号吗?

您可能正在使用
.gdbinit
用于一些目的,包括通过
-x[cmds\u file]
命令行选项传递命令文件可以更好地完成某些目的


一些实验表明,
.gdbinit
在加载程序文件之前运行,而
-x
文件在加载之后运行。

你说得对。我曾尝试使用-ix加载GDB命令文件,但结果与gdbinit相同。对于-x,在加载程序文件后确实会运行命令,这就解决了我的问题。这是一些相关信息。