【问题标题】:How can I get gdbserver to run the target program on start?如何让 gdbserver 在启动时运行目标程序?
【发布时间】:2023-03-07 23:24:01
【问题描述】:

就像上面所说的那样。该程序需要通过脚本与其他程序按顺序调用,我希望它自动运行,以便它尽可能地符合实际运行条件。

编辑

我无法找到答案,但以防万一有人来看这里,我是如何解决这个问题的,因为我可以访问目标上的 gdb 和屏幕。

screen -d -m gdb -x debugstart

其中 debugstart 是一个简单的脚本,其中包含:

file program
r

这将启动一个屏幕会话并在其中启动 gdb,它开始运行您的程序,然后从该屏幕会话中分离,以便您在需要查看调试器时只需 screen -r

【问题讨论】:

    标签: gdb remote-debugging gdbserver


    【解决方案1】:

    你没有解释为什么你希望 GDB 跟踪你的程序,我猜这是在运行时捕获错误(例如,致命错误的信号),这是一个很好的做法,以防难以重现的错误。

    所以一种方法是使用选项--multi 运行gdbserver。然后,您将能够远程运行您的程序,然后按 ctrlc(或命令 interrupt)停止其执行。

    运行 gdbserver

    $ gdbserver --multi <server address>
    

    GDB 脚本:

    target extended-remote <server address>
    remote put <your program>
    set remote exec-file <your program>
    # you could pre-set breakpoints, or whatever
    run
    # ctrl-c to interrupt the execution of the started process
    

    否则,您可以简单地运行您的程序,然后在需要时使用gdbserver --attach 远程附加到它。

    【讨论】:

    • 如你所料,我试图捕捉一个致命错误。但是,该错误似乎只有在系统启动期间被调用时才会发生,因此无法在 gdbserver --attach 崩溃之前运行它。无论如何,我不确定 gdbserver 是否是正确的方法。
    猜你喜欢
    • 2021-10-06
    • 2015-03-25
    • 2022-06-14
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2015-04-29
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多