- 53
- 0
- 约 7页
- 2018-06-06 发布于浙江
- 举报
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:);
您可能关注的文档
- L140传真机用指南.doc
- L171液晶显器检验规范(试行)B版.doc
- LB-350S6145中文规格书.doc
- LB-LINK业WiFi广告营销路由器操作指南二.docx
- LCD1286液晶显示器中文说明.doc
- LCDHome坛_PCB布局布线.doc
- LCD液晶显示简介.doc
- LCD白平衡调说明.doc
- LCD相关技术料收集-2010-04.docx
- LC正弦波振荡相关知识.doc
- 2026年中国分子影像系统市场数据调查、监测研究报告.docx
- 2026年中国肺活量测试仪市场数据调查、监测研究报告.docx
- 2026年中国蜂蜡加工市场数据调查、监测研究报告.docx
- 2026年中国服务器市场数据调查、监测研究报告.docx
- 2026年中国非侵入性脑创伤监测设备市场数据调查、监测研究报告.docx
- 2026年中国非公有云市场数据调查、监测研究报告.docx
- 2026年中国房屋租赁移动应用(APP)市场数据调查、监测研究报告.docx
- 2026年中国茯苓电商市场数据调查、监测研究报告.docx
- 2026年中国分子育种市场数据调查、监测研究报告.docx
- 2026年中国非血管支架市场数据调查、监测研究报告.docx
最近下载
- Unit 1 Animal friends Speed up(课件)外研版(三起)(2024)英语三年级下册.pptx VIP
- 医药企业医院廉洁承诺范文.docx VIP
- 小学综合实践活动一年级下册第四单元《碗筷的摆放和收拾》课件.docx VIP
- Python少儿编程(第1-17课).pptx VIP
- 2026及未来5年中国活检针行业发展研究报告.docx
- 汽车检测诊断技术.pptx VIP
- 小学综合实践活动一年级下册第四单元《碗筷的摆放和收拾》课件.pptx VIP
- 四川省成都市第七中学2025-2026学年高一上学期11月半期考试英语(含答案).pdf
- 集成电路原理与设计之一数字教案_chap.pdf VIP
- python少儿编程课程-第6课:周而复始(for循环).pptx VIP
原创力文档

文档评论(0)