文章目录
- What?
- Why
- How
- 安装GDB
- 安装命令
- 查看是否安装成功
- 调试简单的程序
- 预备一个程序
- 调试
- 使用
- break
- info
- list
- next
- step
- 一些小技巧
- 在`gdb`前+`shell`
- 日志功能
- watch point| catch point
- 调试core
- 调试一个运行的程序
What?
GDB是什么?
全称GNU symbolic debugger
百度百科的解释:
程序调试工具
UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。
GDB支持的语言
- C/C++
- Assembly
- Go
- Pascal
- Rust
等
Why
The purpose of a debugger such as GDB is to allow you to see what is
going on “inside” another program while it executes – or what
another program was doing at the moment it crashed.
这个是gdb
官方文档里面的内容给出了为什么需要gdb
How
安装GDB
安装命令
apt-get install gdb
查看是否安装成功
gdb --version
下面是安装成功的信息显示
调试简单的程序
预备一个程序
编译这个程序生成可执行文件
调试
如果我们想调试一个程序我们在用gcc
编译的时候需要加上参数-g
gcc -g test.c
如何进入调试界面呢?
使用命令
gdb a.out
这里所有的a.out都是用gcc带参数生成的可执行文件
第一个命令
执行
r
退出gdb
quit
使用
break
break
简写b
可以在函数处打断点,也可以在某一行打断点
b main
在某一行打断点
b 7
info
info
是用来查看信息的
info b
:
查看自己的打的断点
list
查看源代码
list
查看我们写的代码
list
next
next
;往下走一行
简写:n
我们打断点的目的是让程序在,某一步停止,便于我们查看信息。
如何查看信息呢?
使用print
简写p
p arr[0]
除了可以打印变量的值之外,我们还可以打印变量的地址
p &arr[0]
一个int
占4个字节
step
进入某个函数
简写s
一些小技巧
在gdb
前+shell
日志功能
set logging on
watch point| catch point
调试core
等到用到时候再学吧
调试一个运行的程序
等到用到时候再学吧