gdb调试器的命令(进出gdb,查看代码/变量/其他信息,不同类型的执行,断点相关,修改变量值)

目录

gdb--调试器

引入

命令 

进入/退出gdb

查看代码/变量/其他信息

list/l(可以缩写)

print / p

display

undisplay

breaktrace

info / i + locals

执行 

run / r

 next / n

step / s

continue

finish

until + 行号

断点

break / b + 行号/函数名

info / i b / breakpoints

delete / d breakpoints(+ 序号)

disable breakpoints

enable breakpoints

修改 

set var + 变量赋值语句


gdb--调试器

引入

  • 程序有两种发布方式,dubug和release
  • 在linux中,默认gcc/g++编译出的二进制程序是release模式
  • 如果要变成dubug模式,需要在编译时加上-g选项
  • 而gdb是linux用于在debug版本下的调试工具

命令 

进入/退出gdb

gdb + 文件名

进入gdb

Ctrl+d  /  quit

退出

查看代码/变量/其他信息

list/l(可以缩写)

默认打印前10行

但有时候打印的内容可能不是我们想象中的那样(汗) ,gdb可能会自己做一些"优化"

print / p

打印表达式/变量的值,只是当前状态下的值

display
跟踪查看一个变量,每次停下来都显示它的值
undisplay
取消对先前设置的那些变量的跟踪
breaktrace
查看各级函数调用及参数
info / i + locals
查看当前栈帧局部变量的值

 

执行 

run / r

运行程序,会在断点处停下

 next / n

单步执行

step / s

进入调用的函数内部

如果使用n,则不会进入调用的函数

当即将进入函数时,输入s即可进入函数

continue
从当前位置开始连续而非单步执行程序
遇到断点停下,否则直接执行到程序结束
finish
执行到当前函数返回的位置(当前位置得在该函数内部),然后停下来等待命令
until + 行号
跳至该行

 

断点

break / b + 行号/函数名

在某一行/函数开头设置断点

info / i b / breakpoints

查看断点信息

delete / d breakpoints(+ 序号)

删除断点

disable breakpoints

禁用断点

该断点还在,但enb(也就是状态被设置为禁用状态:n)

enable breakpoints

启用断点

 

修改 

set var + 变量赋值语句

修改变量的值

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用GDB查看函数调用栈,你可以按照以下步骤进行操作: 1. 首先,启动GDB并加载你的程序。你可以使用以下命令:`gdb <your_program>`。 2. 在GDB中,你可以使用`backtrace`命令或简写的`bt`命令查看函数调用栈。这将显示当前函数调用的顺序以及每个函数的输入参数和局部变量。例如,你可以输入`bt`命令查看函数调用栈。 3. 如果你想查看更详细的信息,你可以使用`frame`命令或简写的`f`命令,后跟帧号。帧号从0开始,表示最新的函数调用。例如,你可以输入`f 0`命令查看最新的函数调用的详细信息。 4. 如果你想查看特定函数的调用栈,你可以使用`up`命令或简写的`u`命令来向上移动到上一个函数调用。例如,你可以输入`u`命令查看上一个函数调用的详细信息。 总结起来,使用GDB查看函数调用栈的步骤如下: 1. 启动GDB并加载你的程序。 2. 使用`bt`命令查看函数调用栈。 3. 使用`f`命令和帧号查看特定函数调用的详细信息。 4. 使用`u`命令向上移动到上一个函数调用。 希望这些信息对你有帮助!\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [GDB使用技巧(3)——查看信息](https://blog.csdn.net/li_wen01/article/details/105223367)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【软件开发底层知识修炼】十七 快速学习GDB调试四 使用GDB进行函数调用栈的查看](https://blog.csdn.net/qq_37375427/article/details/85226496)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [GDB入门教程之查看函数调用堆栈](https://blog.csdn.net/qq_39107832/article/details/119206954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值