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

使用gdb --args参数时如何正确重定向输出且不丢失被调试程序参数

问题根因

你当前配置的错误点在于:gdb的run命令如果不带任何参数执行,会直接清空你通过--args参数传递给被调试程序的所有入参,仅保留程序自身路径作为argv[0],因此会出现argc=1的异常情况。
另外直接在gdb启动命令后加重定向不生效,是因为这种写法捕获的是gdb自身的输出,而非被调试程序的输出。

修复方案

修改你的gdb.txt配置文件中的run命令,使用gdb内置的$argv变量透传之前通过--args传入的所有参数,同时保留重定向配置即可:

run $argv &> /apps/atlas/runtime/logs/gdbsession_output.log
补充说明
  • 配置修改后不需要调整gdb启动命令,你原来的启动命令可以完全保留,所有通过--args传入的参数都会正常透传给被调试程序
  • 如果使用的gdb版本较低不支持$argv变量,你可以直接把参数补全到run命令之后,对应你的场景写法如下:
    run -zzinfo ${ZZINFO} &> /apps/atlas/runtime/logs/gdbsession_output.log
    
  • 可以通过在main函数入口处打断点,执行print argc、print argv命令验证参数是否正常传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:15:02