您的位置:首页 > 其它

GDB基本调试

2016-04-26 15:05 232 查看
调试时gcc -g -Wall -o Hello Hello.c

gdb Hello -tui

-g:       生成调试信息

-Wall:     编译器警告信息

-W:      警告信息

在调用GDB时,命令行指定-tui,或在非TUI模式时使用Ctrl+X+A。

TUI模式:上半部分源码,下半部分输入GDB命令

break main:       在main函数第一行可执行代码设置断点

break n:         在第n行设置断点

break 30 if condition:  条件断点,符合condition才会暂停

break +offset/-offset:  在当前选中栈正在执行的代码行之前或之后offset行设置断点

break *address:     在虚拟内存地址设置断点(比如找不到源代码或共享库)

clear n:          删除n行断点

clear list_insert:    删除函数的所有断点

clear list.c:list_delet:  删除文件:函数的所有断点

delete 1 3 4:      删除断点1 3 4

delete 1-4:       删除断点1到4

disable n:        禁用断点

enable 1 5:       启用断点1 5

enable once 3:      临时启用断点3  

info break:        列出所有断点

run:           跑程序

run 12 5 6:        向程序传递参数12、5、6

next:          行进到下一行

continue:         恢复执行

tbreak:          创建一个有效次数为1的断点

until:          走出循环体然后停止

finish:          跑完程序

print i:         输出 i

watch z:        监视 z

watch (z>5):       查找程序执行期间z值大于5的第一个位置

栈帧(stack frame)操作:

帧栈是与调用关联的运行时的信息存储在成为栈帧的内存区域,

帧中包含函数局部变量的值,函数形参,以及调用该函数位置的记录。

每次发生函数调用创建一个新帧,函数退出时帧弹出栈,释放。

backtrace:       显示整个栈,即当前所有帧集合

frame n:        当前执行函数的帧编号为0,夫帧为1,以此类推

up:           带到调用栈下一个夫帧

down:         与up方向相反
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: