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版权协议,转载请附上原文出处链接和本声明。