gdb快速学习

入门案例:

用gcc/g++编译:

gcc -g -o test test.c

g++ -g -o test test.cpp

其中-g是调试模式 -o是对程序进行优化连接等

终端输入gdb进入gdb调试 再 file test

如图:

 

 注意运行是./你的c程序名

不加./可能不认为是当前目录

 然后可以gdb

file hhh //调试你文件

run 就是运行 输入q或quit退出

这就是一个简单的gdb入门案例

熟悉了之后直接gdb hhh 就可以了

方便的命令: gdb hhh -tui

其实gdb -tui hhh 也行

 会可视化显示你的代码  很方便

断点的设置:

b 2 在第2行设置断点

cl 2  在第2行取消断点

常用的还有b/cl  函数名 注意是在函数入口处

d:删除所有断点

d 2 删除编号2的断点

cl 2  删除第2行断点

其他命令:

c:继续运行(中断后用) 直到下一个断点

u 9:程序运行到第九行然后暂停

u fun :程序运行到fun()函数的入口暂停

disp x + 1:每次自动输出x+1的值 (x :变量)

dis disp 禁用所有disp

en disp 启用所有disp     disp:display

回车:执行上条语句

n:单步运行 遇到函数直接跳过函数 计算出值

s:单步运行 和n类似 但是会进入函数内部

p  x:输出x的值 (p:print)

call :执行一段代码 有返回值输出至屏幕

i (info): 好用 显示信息

i b :显示 所有断点

i lo : x显示局部变量

i disp :显示所有disp

d disp:删除所有disp

bt :查看堆栈

高级命令:

ig ignore 3 7 :让编号为3的断点前7次到达时都不停下来 第8次时停下来

 cond condition 给断点加一个条件

cond  2 i > 3 : 2号断点只有在i>3才起作用

comm commands 在几号断点后停下来执行一段gdb命令 如comm 2 p x 在2号断点停下来执行p x 打印变量x的值(用得少)

wa watch 

wa i 当i的值发生改变时停下来

aw awatch    aw i:当变量i被读写时都停下来

rw rwatch      rw i:当变量i被读时停下来

还有一个

b 7 if i ==9

在第七行设置断点 在i=9时停下来

其他技巧:

查看数组元素:

p *arr@10 查看arr数组的前10位(arr[0]-arr[9])

p arr[3]@5 查看arr[3]及其后4位 共5位

原文地址:https://www.cnblogs.com/ranzhong/p/15801294.html