gcc编译器、gdb调试器常用命令

时间:2022-07-05 18:57:17

函数编译的四个阶段:

1>  预处理。去掉注释、包含文件、宏展开、条件编译…
2>  编译。
3>  汇编。这前三个阶段称为翻译阶段。
4>  链接

gcc常用命令参数

-E        停在预处理阶段
-S 停在编译阶段
-C 停在汇编阶段
-O 编译优化
-o 确定输出文件的名称
-g 产生gdb调试的符号资讯
-c 只编译,不产生可执行文件
-Wall 允许输出所有告警信息


wc命令 查看代码大小

 

ELF文件格式

ELF头

...

未处理数据

ndate全局符号

data只读数据

text代码正文

          

$vim helloword.c

helloworld.c内容如下:
#include <stdio.h>

int main (int argc, char **argv )
{
printf(“hello,world!\n”);

return 0;
}


编译并运行成可执行文件

$gcc –o hello helloworld.c
$./hello


分步编译并查看生成文件的类型

$gcc –E helloworld.c –o hello.i  #生成预编译文件hello.i
$file hello.i #查看hello.i的文件类型
$gcc –S helloworld.c –o hello.s #生成汇编文件hello.s
$file hello.s #查看hello.s的文件类型
$gcc –c helloworld.c –o hello.o #生成目标代码hello.o
$file hello.o #查看hello.o的文件类型


GDB调试工具的使用

gcc编译时使用-g选项生成编译文件,才能使用gdb调试。
gdb常用命令:

l          看源文件。l 2-10 #看源文件的2——10行
b 6 在第6行设置断点
info b 查看断点
r 运行代码
p n 查看变量n的值。同display n
n 单步运行
s 单步运行
c 恢复程序运行
help 帮助
b t 查看栈帧
q 退出