gdb 实用小记
来源:互联网 发布:百家cms微商城v2.6 编辑:程序博客网 时间:2024/06/05 22:59
将日常常用的gdb操作记下来,记忆力不好
1.gdb 调试程序
gdb 程序文件
2.gdb 调试进程
gdb attach 进程pid
3.gdb 调试core文件
gdb --core=core文件 也可以 gdb -c core文件
也可以 gdb xx.dbg(带-g编译后的可执行文件) core文件 这样挺方便的,同时载入带符号的文件和core文件
file 载入可执行文件
core-file 载入core文件
4.gdb 常用命令
打断点:
b 函数名 or 文件名:行号
info b 查看所有断点
delete b 断点编号(可以从info b里看到)
disable b 断点编号
watch 地址,一般需要转换为具体类型,比如watch *(long*) oxxxx;
awatch 变量或者表达式
frame操作:
info f 查看所有frame
frame frame编号 切换frame(可以从info f 看到)
info locals (可以查看所有当前frame的局部变量)
bt 查看进程经历的frame列表
down 下一个帧
up 上一个帧
j 跳转到某行
在调试core文件,以及查看当前运行点之前的frame里局部变量很有用
一般操作:
p 变量名 打印变量值
n 下一步
s 下一步,如果是函数会进入调用的函数里
finish 跳出循环或者函数
c 继续
ctrl+c 中断,这样就可以进行gdb设置,比如设置新的断点,查看其它信息之类,一般在c命令使用后,又想进行gdb操作时使用
查看内存
格式: x /nfu <addr>
说明
x 是 examine 的缩写
n表示要显示的内存单元的个数
f表示显示方式, 可取如下值
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
i 指令地址格式
c 按字符格式显示变量。
f 按浮点数格式显示变量。
u表示一个地址单元的长度
b表示单字节,
h表示双字节,
w表示四字节,
g表示八字节
调试汇编程序:
display /ni $pc //每个断点处会显示n行汇编指令
x/i addr //显示地址处的汇编指令
disas function or start_addr end_addr // 显示函数的汇编代码,or 从地址start到地址end的汇编代码
si 汇编级的下一步
ni 汇编级的下一步
i locals 显示所有局部变量的值
core经验:
如果调用虚函数core,一般是虚表指针地址有问题,可以用x来打印虚表指针地址值,看看里面函数的内容。一般是析构和数组越界导致的
好像经常用的就这么多,发现gdb是个神器啊,+上emacs+cscope+autocomplete,+make,真的不需要ide了,emacs的编辑速度真够快的。另外tcpdump是个调试网络的神器,介绍的文章网上很多
- gdb 实用小记
- gdb 实用小记
- GDB命令小记
- gdb常用参数小记
- gdb调试学习小记
- GDB使用方法小记
- ORACLE实用小记
- 实用快捷键小记
- gdb使用方法【经典实用】
- 实用gdb命令
- gdb实用操作命令
- gdb 调试小记(关于watch)
- 使用gdb调试程序小记
- GDB调试core文件小记
- gdb 实用的使用经验
- gdb调试实用指令 收集
- 实用的GDB调试命令
- Qt Creater、Gdb之Pretty Printer小记
- Qt套接字编程
- SQLite学习笔记(二)
- Android开发之跑马灯效果
- Qt 事件与事件过滤
- SQLite学习笔记(三)
- gdb 实用小记
- 浅析托管与非托管C++代码
- jsp 的web开发
- java调用windows上的tail工具
- SEOmoz工具-seo外链检查工具
- 惠普创新出的SOA式的应用现代化服务
- HTML5--canvas之drawImage用法
- CXF发布WS,不用tomcat,实现usernametoken认证机制(1)
- poj1423(斯特林公式(n!的位数))