Linux GDB调试笔记

前期准备,gdb调试的程序需要 g++的-g参数

例子:

g++ -g main.cpp -o main 

-g参数是为了保留一系列的调试参数,例如程序源文件的名字,以便于查找。

GDB基础指令:()内为缩写

gdb mian(可执行程序)             #运行gdb调试main程序

start                                         #开始调试,停在程序执行的第一行。

next(n)                                #单步执行,不进函数。注意:必须先执行程序(start or run)

step(s)                                #单步执行,会进入函数。同上

run (r)                                 #从头执行程序,直到碰到断点或程序结束。

continue(c)                         #继续执行程序,直到碰到断点或程序结束。

until(u)                                     #运行程序直到循环结束

until  行号                                #运行至某行

finish                                       #运行至当前函数结束,并打印函数的堆栈地址和返回值和参数值等

call  函数(参数)                  #调用程序中可用的函数,并传递参数。例如call test(10)

quit(q)                                #退出gdb

bread (b)                            #设置断点,例如:b 10;在第十行的位置设置一个断点

b 文件名 :行号                      #在指定源文件中设置断点,例如:b test.c :10 

b fn1 if a > b                           #条件断点设置

b func                                     #在函数func()的入口处设置断点,如:break cb_button

delete 断点号n                       #删除第n个断点

disable 断点号n                     #暂停第n个断点

enable  断点号n                     #开启第n个断点

clear 行号n                             #删除第n行的断点

info breakpoints(info b)     #显示当前程序的断点设置情况

delete breakpoints                 #删除所有断点

dir                                         #设置默认源码查找路径。

 list(l)                                  #查看源码,如果在本机编译的程序可直接显示源码。编译时需要-g参数

l 行号                                      #将显示当前文件以“行号”为中心的前后10行代码,如:list 12

l 函数名                                  #将显示“函数名”所在函数的源代码,如:list main

l                                              #不带参数,将接着上一次 list 命令的,输出下边的内容。

watch                                     #设置内存断点,当内存被改写时终止程序。例如:watch *(int *)0x2b32782a 这说明我们只需要知道内存地址就可以监控它

awatch                                   #设置内存断点,读写都会终止程序。例子同上,awatch i   也可以直接用变量名。

rwatch                                   #设置内存断点,读取会终止程序。例子同上

print(p)                            #打印变量值,用法和c语言的printf差不多。print &i;打印变量 i 的地址

attch pid                               #将GDB挂载到正在运行的程序,pid

set                                        #设置内存值

set variable                          #设置参数值 例:set var g=10;

p func(参数1,参数2)            #调用函数func(),打印返回值

参考文档:

Linux下GDB调试指令汇总 - 知乎 (zhihu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值