Linux下C言程序的编译与调试实验报告.docxVIP

  • 53
  • 0
  • 约 7页
  • 2018-06-06 发布于浙江
  • 举报

Linux下C言程序的编译与调试实验报告.docx

Linux下C言程序的编译与调试实验报告

Linux操作系统基础作业Linux下C语言程序的编译与调试王斯 PAGE \* Arabic \* MERGEFORMAT3 / NUMPAGES \* Arabic \* MERGEFORMAT7 Linux下C语言程序的编译调试实验  学 院: 电子信息工程学院 专 业: 通信工程 姓 名: 王斯宇 学 号: 指导老师: 周围老师 完成时间: 2013年6月3日 一、实验目的 1. 熟悉Linux下C语言编译调试环境。 2. 学会使用gcc编译C程序。 3. 学会使用gdb调试C程序。 二、实验内容 1. 在Linux下,编写程序factorize.c,功能如下: 输入一个int型整数, 输出其因式分解结果。 2. 编译运行,生成可执行文件。 3. 用gdb调试该程序,找到错误并修改。 三、实验软件环境 GCC GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布。GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微软的Windows。GCC支持多种计算机体系芯片,如x86、ARM,并已移植到其他多种硬件平台。GCC原名为GNU C编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,并支持处理C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go等。 GDB GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮助你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)。 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 四、实验步骤: 1. 程序编辑 在桌面环境下新建一个文件,打开文件输入代码,保存为factorize.c,然后将其复制到在/home/文档目录下。 附:原程序代码 #include stdio.h int main(int argc, char **argv) { int n,i; printf(Please enter an integer:); scanf(%d,n); printf(%d=,n); for(i=2;i=n;i++) { while(n!=i) { if(n%i==0) { printf(%d*,i); n=n-i; } else break; } } printf(%d\n,n); return 0; } 2. 编译并运行 用gcc命令编译程序通过后运行,输入18,输出结果明显是错误的 3. 调试 进入gdb环境,使用gdb命令,帮助时使用help。 在for循环处(第9行)设置断点,使用命令“b 9”。 在printf函数处(第15行)设置断点,使用命令“b 15”。 查看断点设置情况,使用命令“info b”。 运行代码,使用命令“r”。 单步运行代码,使用命令“n”。 查看暂停点变量值,使用命令“p i”或“p n”。 继续单步运行代码数次,并使用命令查看,判断i或n的值。 继续程序的运行,使用命令“c”。 从断点数据可以得知:程序一直处于while循环之中,i的数值一直为2,所以变量n的数值出现了问题,导致最终输出结果只有2。仔细检查代码后发现错误,原程序第16行“n=n-i”应改为“n=n/i”。 4. 再次编译并运行 这次输出“18=2*3*3”正确,程序编写成功 附:修改后的程序代码 #include stdio.h int main(int argc, char **argv) { int n,i; printf(Please enter an integer:);

文档评论(0)

1亿VIP精品文档

相关文档