gdb调试手册

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
2
3
4
commands 1
>silent
>print ...
>end

也可以定义宏

1
(gdb)define print_and_go

继续执行

  • finish

    一直运行直到当前栈帧结束

  • until

    跳出当前循环

监视点

1
watch val