gdb调试小方法
- set args -i a.txt 命令行参数
- file main 加载主函数
- start 运行主函数,pc指向第一条代码段。(注意全局变量和未初始化区自动跳过)
- b + line号 加断点
- delet + 断点号 删除断点
- delet + breakpoints 删除所有断点
- up 返回上级函数查看
- finish 结束当前函数,跳回上级函数
- until + line号 pc自动跳到某行,等待执行。
- clear 删除当前行断点
- s step 步入
- c continue 运行直到遇到断点
- n next line
- x/3uw buf(地址) 打印某地址的内存
3 3个数据
u无符号10进制 ,或者x十六进制
w word 字, h halfword 双字节 - info macro + 宏名字 打印宏信息
- macro + expand + 宏名字 查看宏数值
- p + 变量
- p * 结构体或指针 的内容
- p /d + 枚举类型 打印枚举变量
- display + 变量 监控变量
- undisplay + 变量 停止监控
- delete display 停止监控所有信息
- set a=x 或 p a=x 强行force变量a为x 临时改变变量
gdb 配合emacs调试
- emacs命令行输入gdb
- gdb-annotate=3
- gdb-many-windows
反汇编命令: objdump:
objdump -d file 将代码反汇编
objdump -S file 代码反汇编同时与源代码交替显示,在编译程序时 加上 -gdwarf-2 -g3。
objdump -j section 反汇编指定section