dutor发表于
2013-09-23 12:47:40
- set follow-fork-mode child,被调试进程执行 fork 时,自动 attach;
- set scheduler-locking on,调试时,禁用线程切换,可选 on/off/step,默认 off;
- symbol-file target.debug,添加独立的 debuginfo 文件;
- i sharedlibrary,查看共享文件映射信息;
- add-symbol-file libxx.debug ADDRESS,添加共享文件的 debuginfo 文件,ADDRESS 是共享文件的映射始址,由 i sharedlibrary 获得;
- gcc test.cpp -g -g3,调试信息中保留 MACRO;
- set logging on,GDB 的所有输入/输出都会被写入当前目录下的 gdb.txt;
- set print pretty on,打印对象,尤其是结构体时,格式更加友好;
- p $rip,打印 rip 寄存器;
- i reg,查看寄存器集,i registers-all 显示全部寄存器;
- display/i $rip,每次断点,打印下一条指令;
- l *0x608048,显示某指令地址对应的代码行,可执行文件包含调试信息时,亦可用 addr2line;
- x/40a $rsp,以地址形式打印 stack,栈乱掉时可救命;
- return 0,停止调试当前函数,并以指定值返回;
- p {tair::StorageManager}0x608048,将指定地址以某类型打印;
- p *array@10,打印数组 array 的前十个元素;
- gcore,将被调试进程 core dump,gcore 还是一个独立的命令,随 GDB 发布。