用途:把「段错误」这类噪音变成可定位的证据——崩溃帧、行号、参数值与损坏状态。核心约束是必须带调试信息构建(-g -O0,需宏信息可加 -ggdb3,不要 strip),否则回溯只有 ?? 帧;自动化环境严禁进入交互式 gdb,须用 -batch 配 -ex 或 -x 脚本,并保证 set pagination off。
主要能力:批处理复现崩溃并打印回溯,例如 gdb -batch -ex run -ex bt --args ./prog ARGS;核心转储事后分析 gdb -batch -ex 'bt full' -ex 'info registers' ./prog ./core(需先 ulimit -c unlimited;Linux 若 core_pattern 交给 systemd,改用 coredumpctl gdb PROG);在崩溃函数下断点检查 info args、info locals、print 表达式;用条件断点或 watch 定位首次写坏的位置;输出含命名帧与 file:line 的回溯,并附执行过的命令、根因值与修复建议,保存到 .agents/research/YYYY-MM-DD-gdb-<short-slug>.md。
使用方式:确认有符号后按四阶段进行——复现、定位、捕获坏值时刻、记录诊断。命令文件方式可写 printf 'set pagination off\nrun\nbt full\ninfo registers\nquit\n' > /tmp/gdb.cmds 再 gdb -batch -x /tmp/gdb.cmds --args ./prog。附加运行中进程用 -p PID 与 thread apply all bt,需 ptrace 权限,Linux 可能需 sudo 或调 kernel.yama.ptrace_scope。
限制与排查:软件监视点会单步执行,可能慢 100–1000 倍,应只监视最窄表达式并在定位后删除;?? 或 optimized out 说明缺调试信息;无 core 文件多因 ulimit -c 0 或 core 走管道;list 需源码路径一致,可用 directory 或 set substitute-path 修正。交互式 TUI 仅供人使用,批处理中不要使用。退出码方面,-batch 会传递被调程序状态,崩溃并带回溯属复现成功。