2. GDB简介 GNU Debugger的简称 Linux/Unix最强大非内核调试器 基于底层调试元件的ptrace库 处理多线程应用不是其强项 面向专业人士 2010/9/24
3. 最常用命令 运行 run/r next/n nexti/ni N step/s stepi/si N continue/c 断点 break/b [function/file:line/addr] [if condition] del N enable/disable N 查看 print/p backtrace/bt info break frame/f N 2010/9/24
7. 高级技巧 断点 硬件断点 hbreak 临时断点tbaddr/name 运行到后自动删除 观察点(watchpoint) watch addr awatchaddr rwatchaddr break on register: b *$eax condition N [exp] 条件断点 2010/9/24
8. 高级技巧 查看 info registers/i r: 所有寄存器 info args函数参数 info local 局部变量 disassemble addrfrom_addr_to转换汇编 info threads 查看当前线程 thread N 切换到指定线程 $pc: 当前指令指针(=eip) $sp:当前栈顶指针(=esp) 2010/9/24
14. 高级技巧 display(续) info display 查看当前设置过的displays undisplay N 取消之前指定的显示方式 enable/disable display N AT&T与Intel反汇编模式切换 set disassembly-flavor intel/att 2010/9/24
15. 高级技巧 强大的set命令 set $eax=0 set my_var=$ecx set {unsigned char *}0x8048424=0xcc set *(unsigned char*)$pc=0xb3 通用格式 set variable = value 详见help set 2010/9/24
16.
17. 有用资源 《GDB内幕》(GDB Internals, http://gnuarm.org/pdf/gdbint.pdf) 介绍gdb内幕知识的优秀手册,在有必要改进源代码时是很有用的 “将程序bug消灭在源代码阶段”(Squashing Bugs at the Source, http://www.linux-mag.com/2004-04/cod_01.html 一篇关于使用源代码分析技术在早期找出程序bug的文章 《内核与用户空间的调试方法》(Kernel and UserSpace Debugging Techniken, http://www.unfug.org/files/debugging.pdf) 关于调试技术的专题演讲论文集,讲述了gdb结构的许多鲜为人知的细节知识 2010/9/24