编译时,使用-g 参数把调试信息(函数名、变量名)加到可执行文件中。

gdb启用

  1. gdb <program>
    调试<program>
  2. gdb <program> <core>
    调试<program生成的core>文件
  3. gdb <program> <PID>
    调试运行时的<program>
  4. gdb –pid <PID>
    调试运行时的<PID>对应的进程

gdb常用命令

  1. print [/<fmt>] <expr> (简写p) 显示指定表达式的内容
    <expr> 显示的表达式。可以为全局变量、局部变量、数组名等。
    <fmt> 显示的格式。x 为十六进制格式,c 为字符格式等。

  2. examine [/<len>/<fmt>/<step>] <addr> (简写x) 显示指定地址内容 <addr> 显示的内存地址的起始地址
    <len> 显示内存的长度
    <fmt> 显示格式。s 为字符串,u 为十六进制。(缺省为十六进制)
    <step> 表示一次显示的字节数。b为单字,h为双字,w为四字。(缺省为四字)

  3. thread <id> 切换到指定线程
    <id> 线程编号

  4. frame <id> 切换到线程中的指定层次的函数
    <id> 函数层次

  5. backtrace [full] 显示当前线程整个栈回溯信息

  6. thread apply all backtrace [full] 显示所有线程的栈回溯信息

  7. info reg 查看当前寄存器信息

  8. info symbol <addr> 显示函数地址对应的函数名
    <addr> 为函数指针地址

  9. call [function] 调用可执行函数

  10. next (简写n) 不进入函数的单步执行

  11. step (简写s) 进入函数的单步执行

  12. continue (简写c) 从断点继续运行

  13. set $var=1 定义临时变量

参考资料