gcc调试命令
- gcc【GNU Compiler competition】选项
- -help:显示gcc帮助说明
- -target-help:显示目标及其特定的命令行选项
- -version:显示gcc版本号和版权信息
- -E:只进行预处理,不编译
- -c:只编译、汇编,不链接
- -pipe:使用管道代替临时文件
- -combine:将多个原文件一次性传递给汇编器
- -g:包含调试信息
- -l:制定include包含文件的搜索目录
- -o:输出成指定文件名
- -v:详细输出编译过程中所采用的的每一个选项
- -ggdp:可在执行文件中包含gdp调试使用的信息
- -std=c99:C99标准
- -w:忽略所有警告(注意是警告,而不是错误
- 开启大部分警告提示
- 创建并使用静态链接库的方法
- 编写C源文件设为static_lib.c,其中写入需要重复调用的函数,然后使用gcc -c static_lib.c生成目标文件static_l
- 使用ar工具创建静态库,命令行输入:ar rcs statc_lib.a static_lib.c
- 编写C头文件static_lib.h,其中写入这些函数的原型声明
gdb调试
- 简介gdp是gcc的调试工具,其功能如下:
- 启动程序,使程序按自定义形式运行
- 使程序停止制定断点位置
- 程序停止后,检查程序执行中的相应情况
- 动态改变程序执行环境
- gdb调试
- gcc test.c -o test -g
- g++ test.cpp -o test -g
- 启动gdb调试的方法有以下三种:
- gdb <filename>
- gdb <filename> core // core是程序core dump产生的文件,产生core文件,需设置栈大小无线使用ulimit -c unlimited
- gdb <filename> PID // PID一般是服务程序运行时的进程ID
- 常用的调试有以下几种
- r:运行被调试的程序。如果之前没有设置过断点,则执行完整个程序;如果设置过断点,则程序停在第一个断点处
- c:继续执行被调试程序,直到下一个断点,或程序整体结束
- b:设置断点,包括以下几种:
- b <行号> // 停在程序的指定“行号”处
- b <函数名称> // 停在程序的“函数名称”处
- b *<函数名称> // 停在编译器生成的prolog代码处。主要用于汇编调试
- b * <代码地址> // 停在代码的某个地址处
- d <编号> // 删除断点
- info b // 查看断点