GDB

GNU Debugger (GDB) 是 Linux & Unix 上广泛使用的 debugger, 可以对 C, C++, Objective-C, go 等程序 debug.

GDB 可以 1) 对正在运行的程序通过 attach 的方式进行 debug, 2) 也可以通过 gdb 新运行一个程序进行 debug, 3) 还可以直接对 core dump 进行有线的 debug.

GDB 命令 cheatsheet

  1. https://darkdust.net/files/GDB%20Cheat%20Sheet.pdf
  2. https://gist.github.com/rkubik/b96c23bd8ed58333de37f2b8cd052c30

GDB 内部实现

GDB 使用 ptrace 系统调用去观察和控制其它程序的运行. 断点是通过替换原程序的某地址的指令为特殊的指令(int03)来实现的, 执行断点程序产生SIGTRAP中断.
关于 ptrace 特定的操作, 参看: https://man7.org/linux/man-pages/man2/ptrace.2.html

标签: none

添加新评论