如何通过GDB命令行同时指定符号文件、可执行文件及程序参数?
解决GDB命令行同时指定符号文件、可执行文件及运行参数的问题
问题背景
想要通过命令行启动GDB时,同时完成三个配置:指定独立的符号文件、指定可执行文件、传递可执行文件的运行参数,但遇到了参数冲突的问题:
- 尝试命令
gdb --symbols=/path/to/symbol_file --args /other_path/to/exe arg1 arg2时,由于--args必须放在命令末尾,导致可执行文件被GDB默认当作符号文件,覆盖了之前通过--symbols指定的路径; - 改用
gdb --symbols=/path/to/symbol_file --exec=/other_path/to/exe可以避免符号文件被覆盖,但无法直接传递运行参数; - 希望完全通过命令行参数实现所有配置,不依赖GDB启动后的交互式命令。
解决方案
使用GDB的-ex参数,在启动时直接执行set args命令来设置运行参数,结合--symbols和--exec参数即可满足需求,命令格式如下:
gdb --symbols=/path/to/symbol_file --exec=/other_path/to/exe -ex "set args arg1 arg2"
参数说明
--symbols=/path/to/symbol_file:明确指定符号文件,不会被后续参数覆盖;--exec=/other_path/to/exe:指定要调试的可执行文件;-ex "set args arg1 arg2":在GDB启动后立即执行set args命令,为可执行文件设置运行参数,全程通过命令行完成配置。
如果需要启动GDB后直接运行程序,可以追加额外的-ex参数:
gdb --symbols=/path/to/symbol_file --exec=/other_path/to/exe -ex "set args arg1 arg2" -ex "run"
内容的提问来源于stack exchange,提问作者charlescochran
相关产品推荐
相关产品推荐

