elf文件一般采用gdb调试,但是gdb调试有很多技巧性,记录一下
ctrl+x+a 进入TUI窗口
有源码的时候进比较好,不然啥也看不见
tbreak 临时断点
这类断点有效期限只到首次到达指定行时为止
watch (z > 28) or wathc z 监视z的值
断点
- info breakpoints 查看断点信息
有源码的情况下,可以指定断点
- break function
- break line_number
- break filename:line_number
- break filename:function
在无源码的情况下,可以这样指定断点
break *address
可用来在虚拟地址处设置断点
删除断点
- delete breakpoint_list 删除断点使用树脂标识符
- delete 删除所有断点
- clear 清除GDB将执行的下一个指令处的断点
禁用启用断点
- disable 3
- enable 3
- enable once breakpoint-list 该断点下次引起GDB暂停执行后被禁用
有一种骚操作就是command 断点号
之后进行编程语句,例如
1 | commands 1 |
也可以定义宏
1 | (gdb)define print_and_go |
继续执行
finish
一直运行直到当前栈帧结束
until
跳出当前循环
监视点
1 | watch val |