gdb的c++使用tips

博客涉及GDB调试相关内容,GDB是重要的调试工具,在软件开发中可帮助开发者定位和解决代码问题,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

### 使用 GDB 调试 C++ 程序 #### 设置断点 为了有效地使用 GDBC++ 程序进行调试,在源代码的关键位置设置断点是必要的。这可以通过 `break` 命令来完成,指定函数名或者文件和行号作为参数[^1]。 ```bash (gdb) break main ``` #### 启动带有调试信息的程序 确保编译时加入了 `-g` 参数以便包含调试信息。之后通过命令行启动 GDB 并加载待调试的应用程序[^2]: ```bash $ gdb ./my_cpp_program ``` #### 单步执行与继续运行 一旦到达断点处,可以利用 `next` 或者 `step` 来逐行执行代码;而当想要让程序正常运行直到遇到下一个断点,则可使用 `continue` 命令[^3]。 ```bash (gdb) next # 执行下一行语句, 不进入函数内部 (gdb) step # 执行下一行语句, 如果是函数调用则会跳转至该函数定义处 (gdb) continue # 继续执行直至下一个断点被触发 ``` #### 查看变量值及表达式的计算结果 在任意时刻都可以查看特定变量的内容或是求解某个表达式的即时结果,这对于理解程序行为非常有用。 ```bash (gdb) print variable_name (gdb) print expression_to_evaluate ``` #### 修改正在运行过程中的变量 有时为了验证某些逻辑分支是否按预期工作,可以在不停止进程的前提下更改一些关键变量的状态,从而改变后续流程走向。 ```bash (gdb) set varible=value ``` #### 处理异常终止情况下的调试 如果应用程序因未处理好的错误(比如访问非法地址)而导致崩溃,那么借助于核心转储文件(core dump),GDB 可帮助定位问题所在的位置以及当时栈帧的情况。 ```bash $ gdb program core_file ``` #### ROS环境下的特殊配置 对于那些嵌入到了机器人操作系统(ROS)节点里的C++应用来说,还可以考虑采用特殊的启动方式——即通过`.launch` 文件内的 `launch-prefix` 属性指定以何种形式开启GDB实例来进行更深入细致地分析[^4]。 ```xml <node name="example_node" pkg="package_name" type="executable" output="screen" launch-prefix="xterm -e gdb --args"/> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值