编译器
- GCC(linux)
- CLang(mac)
#编译指令
gcc/clang -g -O2 -o test test.c -I... -L... -l
#-g 输出调试信息
#-O 指令优化级别
#-o 输出文件
#-I 指定头文件位置
#-L 指定库文件位置
#-l 指定使用什么库
编译过程
链接分为:动态链接/静态链接
编译
clang -g -c add.c
#-c 仅仅编译
生成库
libtool -static -o libmylib.a add.o
测试
gcc/clang -g -o testlib testlib.c -I . -L . -lmylib
调试器
- Gdb
- lldb
指令 | gdb | lldb |
---|---|---|
设置断点 | b | b |
运行程序 | r | r |
单步执行 | n | n |
跳入函数 | s | s |
跳出函数 | finish | finish |
打印内容 | p | p |
继续执行 | c | c |
退出调试 | q | q |
开始调试
gdb/lldb testlib
设置断点
(lldb) b main
查看设置了哪些断点
(lldb) break list
开始运行
(lldb) r
进入函数内部
(lldb) s
打印a变量值
(lldb) p a
退出并执行当前函数
(lldb) finish
结束调试
(lldb) q
dump信息
dwarfdump testlib.dSYM/Contents/Resources/DWARF/testlib