实验一-LinuxC编程工具GCC和GDB
淮海工学院计算机工程学院实验报告书
课程名: 《Linux程序设计》 题 目: 实验一 Linux C编程工具:GCC和GDB 班 级: 软件131 学 号: 122870 姓 名: 王裕
评语:
成绩: 指导教师:
批阅时间: 年 月 日
《Linux程序设计》实验报告 - PAGE 5 -
实验目的与要求掌握Linux C开发过程中的基本概念;掌握如GCC,GDB等开发工具的使用。实验内容将参考代码录入到test1.c文件中,编译执行后发现结果与预期不一致,请使用GDB调试,完成字符串反序输出功能。参考源代码#include #include #include
int reverse_str(char *string); int main (void) { char string[] = "Linux C Tools : GCC and GDB"; printf ("The original string is %s \n", string); reverse_str (string);}
int reverse_str (char *str) { char *new_str; int i, size; size = strlen (str); if((new_str = (char *) malloc (size + 1)) == NULL) { return -1; }
for (i = 0; i < size; i++) new_str[size - i] = str[i]; new_str[size+1] = ' '; printf("The reversed string is %s\n",new_str); free(new_str); return 0 ;}实验步骤编辑源代码test1.cmkdir test1cd test1gedit test1.c使用gedit编辑器,建议课外学习vim;分析代码中语句功能。编译源代码test1.cgcc test1.c -o test1 -g复习gcc常用选项;帮助学生排查编译时错误。分析输出结果调试test1 gdb test1回顾调试的基本方法:跟踪语句执行过程,观察执行结果;设置断点的三种基本方法:① b ② b if condition_expression③ b 查看中间输出结果:① p② set print element 0p 或说明:GDB中查看字符串变量值可通过“set print element 0”命令,一次性显示字符串所有内容。分析中间结果,修改28行语句为new_str[size - i-1] = str[i];实验结果与截图编写test1.c文件并编译
2.设置断点,进行gdb测试跟踪变量。执行到i=27时size-i=0,str[27]已经超过str字符串限制,于是new_str[0]=’\0’。
输出new_str时,由于超过限制无法输出。所以修改程序第28行语句为new_str[size - i-1] = str[i];正确的程序运行结果如下图所示。
思考题分析以下代码,完成指定范围内数值累加功能:#include
/*函数功能:将low到high之间的数值累加求和*/int add_range(int low, int high) { int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum;}
int main(void) { int result[2];