GDB调试工具介绍和安装
不同开发环境中的调试工具
在 Windows 操作系统中,使用的大多是集成的开发环境(IDE),也就是说软件开发工具中已经包含了调试工具,例如 VC、BCB、Dev-C++ 等,这些软件中都集成了调试器。在 Linux 操作系统中,编译程序使用GCC(GCC 编译器的功能非常的强大,几乎可以编译所有的编程语言),集成的开发环境相对较少,但可以使用的调试工具有很多,例如 GDB、binutil、strace 等,最常用的调试工具是 GDB。
GDB调试工具
Linux 开发环境中,GDB 相对其他的调试工具,使用范围要更广,使用方式有字符界面、图形界面,可以单独使用,也可以被集成到 IDE 中。GDB 调试工具在 Linux 操作系统中大多是单独使用的。GDB 调试工具的字符界面和图形界面的比较:
- 图形界面调试较直观,可以很容易的看到程序运行到代码中的位置和程序运行的顺序,但是实现的功能相对较少;
- 字符界面可以实现的功能相对较多,占用的内存资源较少,命令的执行效率要更高,但是显示会相对单一。
该教程讲解的主要是 GDB 的字符界面的操作使用。因为 GDB 的字符界面和 Linux 系统的操作相似,所以使用时更加容易上手。GDB 调试程序最主要是学习一些命令的使用,掌握了所有的命令也就学会了 GDB。GDB 的调试对象可以是可执行文件、core dump 和进程。该教程讲解的主要以调试可执行程序为主。
GDB 的功能非常的强大,相对于 Linux 开发环境下的其他的调试工具,GDB 可以实现的功能:
- 启动应用程序,可以按照调试人员自定义的要求运行程序,例如设置参数和环境变量。
- 可让被调试的程序在指定的调试断点处停住(断点可以是条件表达式)。
- 当程序停止执行时,可以检查此时程序中所有的状态。
- 动态改变程序。在程序运行中改变变量值和代码执行顺序,这样就可以尝试修改这个 BUG。
安装GDB调试工具
检测当前的系统中是否已经安装 GDB 可以在 shell 命令行输入:gdb -v //查看 GDB 调试工具的版本信息。
如果出现如下的信息,就说明当前的系统中已经安装过 GDB 调试工具。
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
- 使用命令安装,例如,Ubuntu系统安装GDB,命令行输入:sudo apt-get install gdb。
- 下载 gdb 的源码包。源码包得获取方式:http://ftp.gnu.org/gnu/gdb。
源码包安装GDB流程
以 GDB 的 9.1 版本为例。tar -xvf gdb-9.1.tar.gz
mkdir build
../configure
或者是9.1-gdb/configure
make [-j(n)] //[-j(n)] 是可选参数,n 表示的是要开启的线程数,与 CPU 相关,不能超过 CPU 支持的最大线程数
make install
gdb -v
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算