GDB调试
  Linux

GDB调试

 次点击
8 分钟阅读

GDB简介

GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。

一般来说,GDB主要帮助你完成下面四个方面的功能:

  1. 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序(按着自己的想法运行)。

  2. 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)

  3. 当程序被停住时,可以检查此时你的程序中所发生的事。

  4. 你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

GDB支持以下编程语言 :

Ada

Assembly

C

C++

D

Fortran

Go

Objective-C

OpenCL

Modula-2

Pascal

Rust

GDB基本命令

# 启动 gdb 并加载程序
gdb ./program

# 启动 gdb 并附加到正在运行的进程
gdb -p PID

# 退出 gdb
(gdb) quit
# 或简写
(gdb) q
# 运行程序
(gdb) run
# 或简写
(gdb) r

# 带参数运行
(gdb) run arg1 arg2
# 在指定行设置断点
(gdb) break 10
# 或简写
(gdb) b 10

# 在函数入口设置断点
(gdb) break main
(gdb) break function_name

# 查看所有断点
(gdb) info breakpoints

# 删除断点
(gdb) delete 1  # 删除编号为1的断点
(gdb) delete    # 删除所有断点
# 继续执行直到下一个断点
(gdb) continue
# 或简写
(gdb) c

# 单步执行(进入函数)
(gdb) step
# 或简写
(gdb) s

# 单步执行(不进入函数)
(gdb) next
# 或简写
(gdb) n

# 执行完当前函数并返回
(gdb) finish
# 查看当前行附近的代码
(gdb) list
# 或简写
(gdb) l

# 查看指定行附近的代码
(gdb) list 15

# 查看指定函数的代码
(gdb) list main
# 打印变量值
(gdb) print variable_name
# 或简写
(gdb) p variable_name

# 修改变量值
(gdb) print variable_name = new_value

# 查看变量类型
(gdb) ptype variable_name

# 查看内存内容
(gdb) x/10xw &variable  # 以16进制查看10个字(word)
# 查看调用栈
(gdb) backtrace
# 或简写
(gdb) bt

# 切换到指定栈帧
(gdb) frame 2
# 或简写
(gdb) f 2
# 加载核心转储文件
gdb ./program core

# 查看崩溃时的调用栈
(gdb) bt

© 本文著作权归作者所有,未经许可不得转载使用。