欢迎来到天天文库
浏览记录
ID:47531525
大小:163.27 KB
页数:7页
时间:2020-01-13
《实验一-LinuxC编程工具GCC和GDB》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、淮海工学院计算机工程学院实验报告书课程名:《Linux程序设计》题目:实验一LinuxC编程工具:GCC和GDB班级:软件131学号:2013122870姓名:王裕评语:成绩:指导教师:批阅时间:年月日《Linux程序设计》实验报告-5-一、实验目的与要求1.掌握LinuxC开发过程中的基本概念;2.掌握如GCC,GDB等开发工具的使用。二、实验内容1.将参考代码录入到test1.c文件中,编译执行后发现结果与预期不一致,请使用GDB调试,完成字符串反序输出功能。三、参考源代码#include2、io.h>#include#includeintreverse_str(char*string);intmain(void){charstring[]="LinuxCTools:GCCandGDB";printf("Theoriginalstringis%s",string);reverse_str(string);}intreverse_str(char*str){char*new_str;inti,size;size=strlen(str);if((ne3、w_str=(char*)malloc(size+1))==NULL){return-1;}for(i=0;i4、器,建议课外学习vim;(2)分析代码中语句功能。步骤1.编译源代码test1.cgcctest1.c-otest1-g(1)复习gcc常用选项;(2)帮助学生排查编译时错误。(3)分析输出结果步骤2.调试test1gdbtest1(1)回顾调试的基本方法:跟踪语句执行过程,观察执行结果;(2)设置断点的三种基本方法:①b②bifcondition_expression③b(3)查看中间输出结果:①p②setp5、rintelement0p或说明:GDB中查看字符串变量值可通过“setprintelement0”命令,一次性显示字符串所有内容。(4)分析中间结果,修改28行语句为new_str[size-i-1]=str[i];一、实验结果与截图1.编写test1.c文件并编译《Linux程序设计》实验报告-5-2.设置断点,进行gdb测试跟踪变量。执行到i=27时size-i=0,str[27]已经超过str字符串限制,于是new_str[0]=’ ’。输出new_6、str时,由于超过限制无法输出。所以修改程序第28行语句为new_str[size-i-1]=str[i];正确的程序运行结果如下图所示。《Linux程序设计》实验报告-5-一、思考题1.分析以下代码,完成指定范围内数值累加功能:#include/*函数功能:将low到high之间的数值累加求和*/intadd_range(intlow,inthigh){inti,sum;for(i=low;i<=high;i++)sum=sum+i;returnsum;}intmain(void)7、{intresult[2];result[0]=add_range(1,10);result[1]=add_range(1,100);printf("result[0]=%dresult[1]=%d",result[0],result[1]);return0;}答:进行累加时,局部变量sum的值会被内存保存下来,会导致数值错误,要对其初始化为0。把inti,sum;改为inti;intsum=0;2.结构化编程经常将相近功能编译成库形式,方便调用。请查阅资料,使用GCC将一组功能相关的源文件编8、译成静态库或动态库?建立库文件的源文件print1.c和print2.c如下所示:/*print1.c*/#includevoidprint1(intarg){printf("%d",arg);}/*print2.c*/#includevoidprint2(char*arg){printf("%s",arg);《Linux程序设计》实验报告-5-}调用库函数的源文件为main.c如下:/*main.c*/voi
2、io.h>#include#includeintreverse_str(char*string);intmain(void){charstring[]="LinuxCTools:GCCandGDB";printf("Theoriginalstringis%s",string);reverse_str(string);}intreverse_str(char*str){char*new_str;inti,size;size=strlen(str);if((ne
3、w_str=(char*)malloc(size+1))==NULL){return-1;}for(i=0;i4、器,建议课外学习vim;(2)分析代码中语句功能。步骤1.编译源代码test1.cgcctest1.c-otest1-g(1)复习gcc常用选项;(2)帮助学生排查编译时错误。(3)分析输出结果步骤2.调试test1gdbtest1(1)回顾调试的基本方法:跟踪语句执行过程,观察执行结果;(2)设置断点的三种基本方法:①b②bifcondition_expression③b(3)查看中间输出结果:①p②setp5、rintelement0p或说明:GDB中查看字符串变量值可通过“setprintelement0”命令,一次性显示字符串所有内容。(4)分析中间结果,修改28行语句为new_str[size-i-1]=str[i];一、实验结果与截图1.编写test1.c文件并编译《Linux程序设计》实验报告-5-2.设置断点,进行gdb测试跟踪变量。执行到i=27时size-i=0,str[27]已经超过str字符串限制,于是new_str[0]=’ ’。输出new_6、str时,由于超过限制无法输出。所以修改程序第28行语句为new_str[size-i-1]=str[i];正确的程序运行结果如下图所示。《Linux程序设计》实验报告-5-一、思考题1.分析以下代码,完成指定范围内数值累加功能:#include/*函数功能:将low到high之间的数值累加求和*/intadd_range(intlow,inthigh){inti,sum;for(i=low;i<=high;i++)sum=sum+i;returnsum;}intmain(void)7、{intresult[2];result[0]=add_range(1,10);result[1]=add_range(1,100);printf("result[0]=%dresult[1]=%d",result[0],result[1]);return0;}答:进行累加时,局部变量sum的值会被内存保存下来,会导致数值错误,要对其初始化为0。把inti,sum;改为inti;intsum=0;2.结构化编程经常将相近功能编译成库形式,方便调用。请查阅资料,使用GCC将一组功能相关的源文件编8、译成静态库或动态库?建立库文件的源文件print1.c和print2.c如下所示:/*print1.c*/#includevoidprint1(intarg){printf("%d",arg);}/*print2.c*/#includevoidprint2(char*arg){printf("%s",arg);《Linux程序设计》实验报告-5-}调用库函数的源文件为main.c如下:/*main.c*/voi
4、器,建议课外学习vim;(2)分析代码中语句功能。步骤1.编译源代码test1.cgcctest1.c-otest1-g(1)复习gcc常用选项;(2)帮助学生排查编译时错误。(3)分析输出结果步骤2.调试test1gdbtest1(1)回顾调试的基本方法:跟踪语句执行过程,观察执行结果;(2)设置断点的三种基本方法:①b②bifcondition_expression③b(3)查看中间输出结果:①p②setp
5、rintelement0p或说明:GDB中查看字符串变量值可通过“setprintelement0”命令,一次性显示字符串所有内容。(4)分析中间结果,修改28行语句为new_str[size-i-1]=str[i];一、实验结果与截图1.编写test1.c文件并编译《Linux程序设计》实验报告-5-2.设置断点,进行gdb测试跟踪变量。执行到i=27时size-i=0,str[27]已经超过str字符串限制,于是new_str[0]=’ ’。输出new_
6、str时,由于超过限制无法输出。所以修改程序第28行语句为new_str[size-i-1]=str[i];正确的程序运行结果如下图所示。《Linux程序设计》实验报告-5-一、思考题1.分析以下代码,完成指定范围内数值累加功能:#include/*函数功能:将low到high之间的数值累加求和*/intadd_range(intlow,inthigh){inti,sum;for(i=low;i<=high;i++)sum=sum+i;returnsum;}intmain(void)
7、{intresult[2];result[0]=add_range(1,10);result[1]=add_range(1,100);printf("result[0]=%dresult[1]=%d",result[0],result[1]);return0;}答:进行累加时,局部变量sum的值会被内存保存下来,会导致数值错误,要对其初始化为0。把inti,sum;改为inti;intsum=0;2.结构化编程经常将相近功能编译成库形式,方便调用。请查阅资料,使用GCC将一组功能相关的源文件编
8、译成静态库或动态库?建立库文件的源文件print1.c和print2.c如下所示:/*print1.c*/#includevoidprint1(intarg){printf("%d",arg);}/*print2.c*/#includevoidprint2(char*arg){printf("%s",arg);《Linux程序设计》实验报告-5-}调用库函数的源文件为main.c如下:/*main.c*/voi
此文档下载收益归作者所有