Welcome My Friend

gdb instruction

About GDB

GDB, the GNU Project debugger, allows you to see what is going on `inside’ another program while it executes – or what another program was doing at the moment it crashed.

g++相关:https://www.cnblogs.com/lidan/archive/2011/05/25/2239517.html

基本指令:

list/l 列出源代码(十行)
next/n 跳过直接执行不进入函数内部(像OD里面的F8)
step/s 进入函数体(像OD里面的F7)
si 一条一条指令单步的调试
backtrace/bt 查看函数调用的栈帧,可以看到栈帧号
info/i 查看函数局部变量值,一般可写i locals
也可以先bt然后再输入i locals
还可以f [栈帧号]然后i locals看这个函数里面的局部变量值
info registers 可以显示所有寄存器的当前值
frame/f [栈帧号] 可产看其他函数体的局部变量值,配合i locals使用
finish 结束
set $var 修改变量值
display $var 每次停下的时候显示var值,使用undisplay取消
break [行号] 在某行设置断点
i breakpoints 显示断点信息
delete breakpoints [号] 删除断点,不加断点号就是删除所有
disable breakpoints [号] 禁用某个断点,不加断点号就是禁用所有
continue 继续运行
run 执行
x 查看输入
x/7b input表示每个字节一组(b),7表示打印7组
watch 设置观察点
例如watch input[i] 每次运行查看input数组里面i的值
i watch查看设置了哪些断点
p print,p $esp可以打印寄存器中的值
gcc -c 目标文件 将.c文件编译成.o文件,也就是目标文件
ar rs 打包静态库,用法ar rs 静态库名 1.o 2.o …
ar命令类似于tar命令,起一个打包的作用,但是把目标文件打包成静态库只能用ar命令而不能用tar命令。选项r表示将后面的文件列表添加到文件包,如果文件包不存在就创建它,如果文件包中已有同名文件就替换成新的。s是专用于生成静态库的,表示为静态库创建索引,这个索引被链接器使用。
ranlib ar r 之后,再ranlib 静态库名等同于上面的指令
gcc -print-search-dirs 查看默认目录
gcc -c -fPIC *.c 编译共享库的时候要加上fPIC选项
gcc -S main.c 生成汇编文件
gcc -c main.s 生成目标文件

一些注意事项:1.如果某个函数的变量发生越界错误,可能不会立刻发生错误,而是在函数返回时产生段错误

-------------本文结束-------------

文章作者: Summary
文章链接: http://noblestaspiration.net/2018/09/29/gdb-instruction/
版权声明:博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议,转载请注明出处!

想要分我一杯羹吗