✅<1>主页::我的代码爱吃辣
<2>知识讲解:Linux——git
☂️<3>开发环境:Centos7
<4>前言:我们已经可以使用gcc/g++编译代码了,那么在linux上调试代码也是必须的。
目录
一.背景
二.进入调试模式
三.gdb调试操作
1.列出代码
2.断点信息
3.运行程序
4.监视信息
四.gdb指令
程序发布有两种方式:
debug版本中会添加很多的调试信息,方便程序员调试修改bug,release版本中不会添加调试信息,而且还会添加一些优化,在执行的性能上要优于debug版本,一般是直接发布给用户使用的版本。
linux下使用gcc/g++默认编译以后的可执行程序一般都是release版本,如果我们想得到debug版本,我们就需要使用命令:
gcc -o [目标文件] [源文件] -g
编写makefile:
test_release:test.c
gcc -o test_release test.c
test_debug:test.c
gcc -o test_debug test.c -g
.PHONY:clean
clean:
rm -rf *_test
首先我们使用gdb调试自然也是需要debug发布的版本的可执行程序的,使用命令:
gdb [debug可执行程序]
使用Ctrl+d或者quit推出gdb调试。
测试代码:
#include
int func(int a, int b)
{
int a1 = a * 10;
int b1 = b * 10;
int sum = a1 + b1;
return sum;
}
int main()
{
int count = 10;
int sum = 0;
for (int i = 0; i < count; i++)
{
printf("hello:%d->%d\n", i, count);
sum += i;
}
func(1, 2);
return 0;
}
列出代码我们使用的命令是:
list [行号]/l [行号]
(1)在某一处设置断点命令是:
b [行号]
(2)在某一函数位置设置断点:
break [函数名]
(3)查看断点信息:
info break
注意:
Num:是断点的编号。
What:是对断点的描述。
(4)删除某一个断点
delete breakpoints [断点号]
(5)删除所有断点
delete breakpoints
(6)断点禁用
可已经断点禁用,使得断点在存在的情况下,程序在断点处继续在运行。
disable breakpoints [断点号]
(7) 启用断点:
enable breakpoints [断点号]
将禁用的断点重新启用。
(1)运行程序:
r
运行程序,如果我们程序中没有断点,直接将程序执行完。
如果程序中有断点,将直接运行至断点处。
(2)逐语句执行:
n / next
逐语句不会进入函数,直接执行函数语句。
(3)逐过程执行:
s或step
逐过程执行,可以进入函数内部逐过程执行。
(1)查看某个变量
p 变量名
(2)变量追踪
display [变量名]
跟踪查看一个变量,每次停下来都显示它的值。
大家可以将gdb调试与VS2022调试对比学习。