(9)gdb 笔记(2):查看断点 info b,删除断点 delete 3,单步执行 n s,回溯 bt,查看变量 p,查看指定内存处的数据 x,指定动态库 set,继续执行 c,查看函数调用栈f

(11) 查看断点 info b:

# info b

举例:

在这里插入图片描述

(12)删除断点 delete 2 或者删除所有断点

# 1. 删除指定的断点
delete  3
# 2. 删除所有断点
delete  回车,之后输入 y 确认删除所有断点

++ 举例:

在这里插入图片描述

++ delete 不接参数,就是删除所有的断点的意思。 GDB7.0 以后,这么删除所有断点的操作会被保护,就是要在回答 yes 以后,电脑才会删除所有的断点。

(13)单步执行

# 1. 如果遇到函数不进入到函数里面      next(n) / ni    类似于 vs2019 里的 F10 与 F11 
# 2. 如果遇到函数调用,进入到函数里面, step(s) / si    i 只是会机器指令所在的地址序号,而非汇编指令与指令本身,没啥意义

++ 举例:

在这里插入图片描述

++ 以及 s 的使用

在这里插入图片描述

++ 以及 ni

在这里插入图片描述

++ 以及 si

在这里插入图片描述

(14**)函数调用链的回溯命令 bt** backtrace :

在这里插入图片描述

++ 举例:

(gdb) bt
#0  0x0804841d in foo (a=3, b=5) at example.c:10
#1  0x08048442 in bar (x=10)     at example.c:16
#2  0x08048464 in main ()        at example.c:22

++
在这里插入图片描述

++ 测试一下:

在这里插入图片描述

(15)查看变量 p 或 print

(gdb) p fileName=0x7fffffffe0f6
$1 = 0x7fffffffe0f6 "/work/video/sky.ts"

++ 举例:

在这里插入图片描述

(16) 退出: quit 。

(17)以上是基本的调试方法。对于简单的调试,已经足够了。但对于复杂的还要继续学习。查看指定内存处的数值 X

在这里插入图片描述

++以及:

在这里插入图片描述

++ 给出咱们自己的举例:

在这里插入图片描述

++ 查看内存数据,可以查看,但看不懂,感觉对于调试的意义不大。接着列出当前堆栈中的数据

在这里插入图片描述

(18) 链接动态库 set

#   设置动态库的相对搜索路径
(gdb) set   solib-search-path       +   path

#   设置动态库的绝对搜索路径
(gdb) set   solib-absolute-prefix   +   path


在这里插入图片描述

(19) 继续执行程序 C :

# .继续执行到下一个断点  (恢复所有线程的执行)
(gdb) c

++ 举例在:

在这里插入图片描述

++ 举例:

在这里插入图片描述

(20) **查看函数调用栈 f 或 frame ** :

#  选择进入对应的栈
f  +  num

在这里插入图片描述

++ 以及:

在这里插入图片描述

++ 给出理论总结

在这里插入图片描述

(21)

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值