gnu binutils

一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。是UNIX系统实验室(USL)作为应用程序二进制接口(Application Binary Interface,ABI)而开发和发布的,也是Linux的主要可执行文件格式。

gcc

  • -g 设置为gdb可使用可执行文件
  • -E 预处理
  • -S 编译为汇编代码
  • -c 编译为目标文件
  • -o 输出的文件名称

gdb

  • l 列出代码
  • break+行号 设置断点
  • break+函数
  • info break 查看断点信息
  • r 运行程序
  • n 单步执行
  • p 输出变量
  • c 继续运行直到下一个断点

debug

函数运行时间与调用次数

gcc -o test test.c -g -pg
./test # 运行完后会生成gmon.out文件
gprof test # 实现依赖于unix信号量

行计数

gcc -o test test.c -fprofile-arcs -ftest-coverage
./test
gcov test # 生成.gcov文件