GNU调试器( GDB ) 是一个便携式 调试器,可以在许多类Unix系统上运行,并且适用于许多编程语言。从版本 7.0 开始,新功能包括对Python脚本[8]的支持,从版本 7.8 开始,还包括对GNU Guile脚本的支持。[9]从版本 7.0 开始,支持“可逆调试”——允许调试会话向后退一步,就像倒带崩溃的程序以查看发生了什么一样。
kGDB
KGDB也使用相同的模式通过 gdb 在源代码级别调试正在运行的Linux 内核。使用 KGDB,内核开发人员可以像调试应用程序一样调试内核。它使得在内核代码中放置断点、单步执行代码和观察变量成为可能。在具有硬件调试寄存器的体系结构上,可以设置观察点,当执行或访问指定的内存地址时,观察点会触发断点。KGDB 需要一台额外的机器,使用串行电缆或以太网连接到要调试的机器。
GDB使用名为ptrace的系统调用(该名称是“进程跟踪”的缩写)来观察和控制另一个进程的执行,并检查和更改进程的内存和寄存器。
set disassembly-flavor intel
Display/undisplay $rax 自动/取消显示rax的值
info display 查看所有自动显示的变量
display /5i $pc 设置停止后自动显示下面5条指令
gdb attach pid
dump memory /root/memory.dump 0xc81fff0000 0xc820200000
其中dump memory是命令,/root/memory.dump是保存的路径,后面是从cat /proc/pid/maps中查看到的进程内存。