【问题标题】:GDB automate commands after symbols have been loaded加载符号后 GDB 自动执行命令
【发布时间】:2019-08-06 17:00:30
【问题描述】:

我正在使用 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运行,在二进制文件加载之前发出“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 中删除“目标远程”命令并在 GDB 控制台中手动调用它,一切正常,但我不想这样做,我想自动化一切。

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

【问题讨论】:

    标签: arm gdb embedded elf gdbinit


    【解决方案1】:

    您可能将.gdbinit 用于某些目的,其中包括通过-x [cmds_file] 命令行选项传递的命令文件可以更好地完成某些目的。

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

    【讨论】:

    • 你是对的。我曾尝试使用 -ix 加载 GDB 命令文件,但结果与使用 gdbinit 相同。使用 -x 命令确实在加载程序文件后运行,这解决了我的问题。 Here 是一些相关信息。
    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多