GCC和GDB
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCC和GDB相关的知识,希望对你有一定的参考价值。
1、GCC
linux下,gcc 是指gcc c编译器。我们从一个程序到一个可执行文件来说明gcc的几个选项:
如果你写的代码是hello.c,你的程序将经历下面的步骤到达硬盘或者内存成为可执行文件。
gcc -E main.c -o main.i //第一步:hello.c(文本)经过预编译生成hello.i(文本)
gcc -S main.i -o main.S //第二步:hello.i(文本)经过编译器生成hello.s(汇编。文本)
gcc -c main.c -o main.o //第三步:hello.s(文本)经过汇编器生成hello.o(二进制)。
gcc main.o -o main //第四步:hello.o(二进制)经过链接器生成hello可执行文件。
一般情况下用gcc main.c -o main 就可以直接生成可执行文件main。
2、gdb(一些基本的调试命令)
需要调试的程序在编译的时候要加 -g 选项,程序才能进行调试
list 显示源文件:
list 没有参数,显示当前行之后或周围的10多行
list start,end 显示从行号start到end之间的代码行。
print 查看运行时的数据
print i 显示当前变量i的值
print &i 显示变量i的存放地址
print [email protected] 显示从array(数组名)开始的5个值
print array[2]@3 显示从array第二个元素开始的3个数组元素的值
whatis i 显示变量i的数据类型
设置断点 break
break linenum 在当前文件指定行linenum处设置断点
break function 在当前文件函数function的入口处设置断点
显示断点 info info breakpoints/break/watchpoints [num]
单步跟踪 step [N] 如果遇到函数调用,并且该函数编译时有调试信息,则会进入该函数内执行。
next [N] 遇到函数调用时,执行整个函数。
连续执行continue 从当前行开始,连续执行到下一个断点处,或者到达该程序结束。命令中可以给出一个数字N,忽略其后N-1次断点。
运行程序 run。
clear(清除所有已定义的断点),delete(删除所有断点,后面可给出断点号码,多个断点用空格分开)
最后,补充一句上面的函数都可以用首字母简写
以上是关于GCC和GDB的主要内容,如果未能解决你的问题,请参考以下文章