【Linux】代码调试

Linux系统下代码调试

1.简介

在Linux系统下可以使用GDB进行调试,GNU开源组织发布的一个强大的UNIX下调试程序工具。

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

1、启动你的程序,可以按照你自定义的要求随心所欲的运行程序。

2、可以让调试程序在你所指定的位置的断点处停止。

3、当程序停止时,可以检查此时你的程序中所发生的事情。

4、动态的改变你程序的执行环境。

2.使用以及常用命令

首先需要在linux系统下安装g++(编译器)以及GDB(调试工具),vim(其余编辑器也可以)

  • 下载g++
sudo apt install g++
  • 下载GDB
sudo apt install GDB
  • 下载vim
sudo apt install vim

接下来使用vim写一段代码并保存为文件

vim test.cpp

编写代码之后使用Esc退出vim模式,输入[:wq]进行文件的保存。
接下来使用g++进行编译,注意,如果想要使用GDB进行代码调试,一定要使用下面的命令
(-g是告诉程序要进行调试,使用此命令后,生成的文件没有后缀名)

g++ -g test.cpp -o test

接下来有两种方式进入调试模式
1.直接使用gdb

gdb test
//此时会出现很多版本信息,也可使用下面代码
gdb -q test


2.先进入gdb模式,之后加载文件

gdb  //进入了gdb模式
(gdb)  file test  //加载test文件


接下来就可以使用gdb进行各种调试了,常用命令如下:

1.run
运行已经加载的文件

2.list
输出加载文件中的代码,默认输出前10行代码,可以使用 show listsize来查看默认参数,可以使用set listsize 来更改输出代码的行数。还有其他参数:

  • list 5,10 显示第五行到第十行的代码
  • list func 显示func函数周围的代码
  • list test.cpp:5,10 显示源文件test.cpp中第五行到第十行的代码,用于调试多个源文件的程序

3.break 7
在第七行设置断点,程序停在第七行之前,也可以使用条件表达式和函数名设置断点

(gdb)break 7 if i==10  //条件表达式
(gdb)break func
(gdb)info breakpoints  //查看断点信息
(gdb)clear 6  //删除第6行的断点,也可以使用函数名
(gdb)delete  //参数为端点的编号,可以一次性删除多个端点,使用空格隔开,如果没有参数,默认删除所有断点

4.continue
程序暂停时继续运行程序
5.print

  • 变量名或表达式,打印该变量或者该表达式的值。whatis 变量名或者表达式,可以显示该变量或表达式的数据类型。
  • 变量=值,这种形式还可以给对应的变量赋值;类似的还有set variable 变量=值。作用和用print赋值相同。

6.next
继续执行下一条语句,下一条语句遇到函数调用的时候,next不会跟踪进入函数,而是继续执行下面的语句
7.step
下一条语句遇到函数调用的时候,会跟踪进入函数内部。
8.quit
退出调试


版权声明:本文为Manner11原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。