
目录
🌈前言🌈
本期【Linux杂货铺】将讲解Linux中调试工具gdb的使用,各个参数的含义,如何在Linux中将代码调试起来,以及各个参数对应的在IDE中的含义。
个人博客:秋刀鱼的滋味@-CSDN博客
在程序发布方式中,有两种模式:debug模式 和 release模式。release模式下是不能进行调试的,所以在开发过程之中,使用的都是debug模式。
Linux在使用 gcc/g++编译出二进制程序时,默认使用的是release模式。
要使用gdb调试,必须在源代码生成的二进制程序的时候,加上 -g 选项。
- //test.c
- #include
- int AddToTarget(int start , int end)
- {
- int i = start;
- int sum = 0;
- for(;i <= end;i++)
- {
- sum += i;
- }
- return sum;
- }
-
- int main()
- {
- printf("run begin...\n");
- int result = 0;
- result = AddToTarget(1,100);
- printf("resylt : %d \n",result);
- printf("run end...\n");
- return 0;
- }
-
先创建test.c文件,写入代码。
通过gcc test.c -o test-debug -g命令,生成test-debug文件。
最后 gdb test-debug 调试代码
● list / l + 行号:显示源代码,接着上次的位置往下列,每次列10行,知道代码尾。

● list / l + 函数名:列出某个函数的源代码。

运行程序,从开始连续而非单步执行程序。在VS中,相当于F5。


在某一行或者某某个函数开头设置断点。在VS中相当于F9。

查看断点。其中断点是按编号操作的,编号按照创建顺序给出。


禁用断点。

Enb表示断点是否启用,是的话参数为y,禁用为n。
启用断点。

删除断点。

单条执行。但必须在程序run之后才能使用。run是调试,但不能一行的操作,所以必须配合断点b来使用n。
在VS中next相当于F10,逐过程调试,不会进入函数体内部进行查看。



进入函数调用调试。在VS中,相当于F11


从当前位置开始连续而非单步执行程序。相当于在执行到断点后,run程序。

执行到当前函数返回,然后等待接下来的命令。如我们step到函数内部,不想调试函数内部信息,只想查看函数执行完结果,可以使用finish,

打印变量或者表达式的值。

修改变量的值。

跟踪查看一个变量,你每次停下都显示它的值。在VS中,相当于监视窗口。

取消先前的那些变量的跟踪

跳转到指定行,中间的代码都是运行的。

以上,我们就对Linux中调试工具gdb做了讲解,包括了如何生成可调式版的代码,如何去调试等一系列内容,总体上来说非常简单,只需要多加练习即可。
以上,就是本期【Linux杂货铺】的内容了,如果感觉对你有帮助,欢迎点赞,收藏,关注,Thanks♪(・ω・)ノ。
