第六章 linux 程序设计(gcc).ppt
文本预览下载声明
动态调试举例 初次错误定位: 输出有错误 错误定位 重新开始一次调试; 启动gdb; 加载调试程序(./my_app); 查看程序源代码 命令: list 文件名 动态调试举例 (gdb) list my_app.c:1,20 1 #include stdio.h 2 #include greeting.h 3 #define N 10 4 int main(void) 5 { 6 char name[N]; 7 printf(Your Name,Please:); 8 scanf(%s,name); 9 greeting(name); 10 return 0; 11 } (gdb) break 7 BreakPoint 1 at 0x8048384: file my_app.c, line 7. 在程序第7行设置断点 命令: (gdb) break 7 查看源代码 设置断点 提示信息 动态调试举例 错误详细定位 1 (gdb) run 2 Starting program: /home/tom/shell_script/cpp/my_app/my_app 3 Breakpoint 1,main() at my_app.c:7 4 7 printf(Your Name,Please:); 5 (gdb) next 6 8 scanf(%s,name); 7 (gdb) next 8 Your Name,Please:tom 9 9 greeting(name); 启动调试程序 断点激活 步进下一步 动态调试举例 10 (gdb) print name 11 $1 = “tom\000ò·000?? 12 (gdb) step 13 greeting(name=0xbfffdf20 “tom”)at functions/greeting.c:5 14 5 printf(”Hello !\r\n”); 15 (gdb) step 16 Hello ! 17 6 } 18 (gdb) kill 19 Kill the programe being debugged?(y or n)y 20 (gdb) quit 错误详细定位 查看变量值 进入函数内部 步进执行 停止调试 退出gdb 动态调试举例 分析: 11行说明name变量被正确赋值(tom) 13行说明name变量值被正确赋予greeting的参数变量name 16说明打印出现了错误,即错误出现在函数greeting中; 综合分析 错误出现在greeting.c的第5行; 原因: 输出字符串的格式不对; 改正错误 动态调试举例 动态调试总结 主要错误类型: 算法错误; 输入错误; 定位方法: 设置断点; 单步步进执行; 查看变量取值变化; 反复执行,逐步缩小错误范围; 课后习题 1、从文本源代码到可执行文件,gcc可以对哪些步骤进行控制? 2、编一个简单的helloworld程序,利用gcc控制程序生成的四个步骤。 3、简述gcc的用法和常用参数的含义。 4、上机查找gcc利用的库文件和头文件都放在什么路径下? 5、make工具如何使用?Makefile的基本格式是什么? 6、简述gdb的用法和常用命令的含义。 第6章 常用开发工具 主要内容 gcc简介 功能 命令 利用gcc编译c程序 利用make工具简化编译过程 make简介 Makefile基本格式 调试 静态调试 动态调试 gdb调试工具的使用 gcc简介 名称: GNU project C and C++ Compiler GNU Compiler Collection 管理与维护 GNU项目 对C/C++编译的控制 预处理(Preprocessing) 编译(Compilation) 汇编(Assembly) 链接(Linking) gcc的使用 基本使用格式 $ gcc [ 选项 ] 文件名 常用选项及含义 gcc常用选项 选项 含义 -o file 将经过gcc处理过的结果存为文件file,这个结果文件可能是预处理文件、汇编文件、目标文件或者最终的可执行文件。假设被处理的源文件为source.suffix,如果这个选项被省略了,那么生成的可执行文件默认名称为a.out;目标文件默认名为source.o;汇编文件默认名为source.s;生成的预处理文件则发送到标准输出设备。 gcc的常用选项 gcc常用选项 选项 含义 -c 仅对源文件进行编译,不链接生成可执行文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项。 -g[gdb] 在可执行文件
显示全部