gcc常用命令
gcc编译分为以下四个步骤:
- 预处理 .c -> .i 【预处理器】
gcc -E hello.c > pianoapan.txt
,gcc -E hello.c | more
- 将预处理的文件转换为汇编文件 .i -> .s【编译器】
gcc -S hello.c
- 将汇编文件转换为二进制文件 .s -> .o 【汇编器】
gcc -c hello.c
- 链接,生成可执行文件 【连接器】
gcc hello.c
常用命令:
-o
指定输出文件名-g
允许调试-shared
生成共享库-LDIRECTORY
指定额外库目录-IDIRECTORY
指定额外头文件目录-O0
不进行优化处理-O 或 -O1
进行优化处理,不同级别优化-O2, -O3
gdb常用命令
gdb hello.o
开始对hello.o文件进行调试gdb -tui
分屏调试,实时显示源代码file hello.o
指明可执行文件进行调试list 或 l
显示代码start
开始单步调试next 或 n
下一步,遇到函数直接执行整个函数,不进入函数step
下一步,遇到函数进入函数内部until
运行程序直到退出当前循环体return 0
强制退出当前程序,并直接返回0run args
重新开始调试, 可通过args输入参数p variable
打印变量variable的值set var a = 6
将变量 a 的值设为 6x/20xw 0x7ffffffffffff
查看对应内存处的值,显示20个单元,16进制,4字节每单元。 (x: 16进制, d:10进制, o: 8进制, t: 2进制, c:字符形式, f:浮点格式)break file:num if testsize==100
在file文件num行设置断点(条件断点),省略file则在当前文件设置断点delete N
删除N号断点delete
删除所有断点clear N
清除N之前的所有断点info breakpoints
查看当前设置的所有断点q
退出bt
查看函数堆栈f n
切换到编号为n的堆栈finish
结束当前函数