You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GDB会话中按序加载双程序并避免远程设备重置?

问题分析

你的核心问题在于:

  • 原脚本中切换inferior后重复执行target extended-remote,这会强制断开原有远程连接并重建,直接导致设备重置。
  • 未在第一个程序中设置断点,run命令会直接执行完progA,根本不会触发断点事件就进入后续步骤。
解决方案

要实现“第一个程序触发断点后再加载运行第二个程序”且不重置设备,关键是复用已建立的远程连接,并确保断点触发后再切换inferior处理第二个程序。以下是修正后的脚本:

gdb -batch -l 20 \
  -ex "target extended-remote localhost:3333" \
  # 为第一个程序创建inferior并加载
  -ex "add-inferior -exec ${progA}" \
  -ex "inferior 1" \
  -ex "load" \
  # 在第一个程序的目标位置设置断点(替换为你实际需要的断点,比如main函数)
  -ex "break main" \
  # 运行第一个程序,直到断点触发
  -ex "run" \
  # 创建第二个程序的inferior,复用已有远程连接
  -ex "add-inferior -exec ${progB}" \
  -ex "inferior 2" \
  -ex "load" \
  # 运行第二个程序
  -ex "run" \
  # 可选:若需继续执行第一个程序,可添加以下两行
  # -ex "inferior 1" \
  # -ex "continue"
关键细节说明
  • 复用远程连接:仅在会话起始执行一次target extended-remote,后续所有inferior共享该连接,避免重复连接引发设备重置。
  • 断点控制流程:必须为第一个程序明确设置断点,run命令会在断点处暂停,此时再切换到第二个inferior执行后续操作。
  • inferior上下文切换:通过inferior <编号>精准切换操作对象,确保每个命令对应正确的程序。

内容的提问来源于stack exchange,提问作者Riotshielder21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:25:00