上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 10 C程序调试

lecture10一c程序调试 绳伟光 上海交通大学微纳电子学系 2017年05月07日
lecture 10 —— C程序调试 绳伟光 上海交通大学微纳电子学系 2017年05月07日

内容 ■7 程序调试 ■GU界面下的调试 ■命令行调试工具 2
程序调试 GUI界面下的调试 命令行调试工具 内容 2

内容 ■程序调试 ■GUI界面下的调试 ■命令行调试工具 3
程序调试 GUI界面下的调试 命令行调试工具 内容 3

调试 调试,亦称Debug,指发现和解决程序中错误 的过程 ■调试的步骤 必发现程序错误的存在 ·以隔离、消除的方式对错误进行定位 确定错误产生的原因 提出纠正错误的解决办法 必对程序错误予以改正,重新测试
调试,亦称Debug,指发现和解决程序中错误 的过程 调试的步骤 发现程序错误的存在 以隔离、消除的方式对错误进行定位 确定错误产生的原因 提出纠正错误的解决办法 对程序错误予以改正,重新测试 调试 4

Bug的由来 。J 99 o8t a人aw太k /.270 9.037w702了 /000 shaind 9.378y%&9Swk 13vc (032 MP-mc 985)659250s9 033 PRO 2.130y7095 coL 2.130%767 f356-2 033 2 to fuko 2销37 1/0 Sjr↑ (Sine chest) 152S 1S45 Relot7o Pane F moti)in celay First actsal g。Q心sk. case ofbu1bein1fun以 c2,o以Agrm 历史上第一个程序Bug 5
Bug的由来 历史上第一个程序 5 Bug

调试器(Debugger) 调试器:一种软件工具,可辅助用户装载程序并控制 程序运行,进而定位软件错误 ■调试器分类 通用调试器:SoftICE、OlyDbg、WinDbg、IDAPro. 专用调试器:随编程语言开发工具提供,比如随VS、 Eclipse、 Codeblocks等IDE提供的调试器,以及gdb等命令行 调试器 程序运行无错误或调试无错误并不表示程序正确,调 试只能证明程序包含错误,不能证明程序正确,程序 正确性需要形式化证明才能保证 ■但现实世界中,调试器仍然具有重要作用
调试器:一种软件工具,可辅助用户装载程序并控制 程序运行,进而定位软件错误 调试器分类 通用调试器:SoftICE、OlyDbg、WinDbg、IDAPro… 专用调试器:随编程语言开发工具提供,比如随VS 、 Eclipse、Codeblocks等IDE提供的调试器,以及gdb等命令行 调试器 程序运行无错误或调试无错误并不表示程序正确,调 试只能证明程序包含错误,不能证明程序正确,程序 正确性需要形式化证明才能保证 但现实世界中,调试器仍然具有重要作用 调试器(Debugger) 6

穷人的调试器一 printf 思路:用printf>将所有怀疑有错误的数据打印 出来观察 1 int main() 2 3 int n; 4 double pi,i,j; 5 printf("Please input wanted loading minute:\n"); 6 scanf("%d",&n); 7 for(pi=0.0,i=1.0,j=1.0;1<n;i+=2,j=-j) 8 9 printf("%1f\n",j); 10 pi+=(17(1*j); 11 12 pi*=4; 13 printf("The value of pi is%lf",pi); 14 return 0; 15}
思路:用printf将所有怀疑有错误的数据打印 出来观察 穷人的调试器 —— printf 7 1 int main() 2 { 3 int n; 4 double pi, i, j; 5 printf("Please input wanted loading minute:\n"); 6 scanf("%d", &n); 7 for (pi = 0.0, i = 1.0, j = 1.0; i < n; i += 2, j = -j) 8 { 9 printf("%lf\n", j); 10 pi += (1 / (i*j)); 11 } 12 pi *= 4; 13 printf("The value of pi is%lf", pi); 14 return 0; 15 }

内容 ■程序调试 ■GUI界面下的调试 ■命令行调试工具 S 8
程序调试 GUI界面下的调试 命令行调试工具 内容 8

用GU调试要点 找到设置breakpoint的菜单项,一般可直接在 编辑框的左侧双击设置断点 ■ 以Debug?模式编译程序 ■启动调试模式,一般从菜单或者按钮找 ■找到step in,step out等几个菜单项,一般都配 备快捷键,可单步执行程序 ■实例:Visual Studio、Eclipse、Codeblocks 9
找到设置breakpoint的菜单项,一般可直接在 编辑框的左侧双击设置断点 以Debug模式编译程序 启动调试模式,一般从菜单或者按钮找 找到step in, step out等几个菜单项,一般都配 备快捷键,可单步执行程序 实例:Visual Studio、Eclipse、Codeblocks 用GUI调试要点 9

内容 ■程序调试 ■GU1界面下的调试 ■命令行调试工具 10
程序调试 GUI界面下的调试 命令行调试工具 内容 10
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 01 课程简介及编程基础(绳伟光).pdf
- 机械工业出版社:计算机科学丛书《计算机组成与设计:硬件、软件接口》电子教材(中文第4版).pdf
- 《计算机系统结构》课程教学资源(电子书籍)《Computer Systems》A Programmer's Perspective(Randal E. Bryant、David R. O'Hallaron,THIRD EDITION).pdf
- 《计算机系统结构》课程教学资源(电子书籍)《Computer Organization and Design》THE HARDWARE / SOFTWARE INTERFACE(DAVID A. PATTERSON JOHN L. HENNESSY,Fourth Edtion,彩色版).pdf
- 《中文信息学报》:中文组织机构名称与简称的识别.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲义)方波生成器项目报告书.doc
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第8讲 Windows应用程序设计.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第7讲 C++类(2/2).pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第6讲 C++类(1/2).pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第5讲 指针与引用.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第4讲 数组与结构.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第3讲 函数与结构化程序设计.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第2讲 C++程序的流程控制.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(讲稿)第1讲 C++语言概述及数据类型(何其昌).pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(课件讲稿)总复习(共八讲).pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(学习资料)基于MFC的对话框程序.pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(学习资料)C++练习(答案).pdf
- 上海交通大学:《C++程序设计与实践》课程教学资源(学习资料)C++练习(题目).pdf
- 上海交通大学:《Computational Thinking and Approach》教学资源(课件讲稿)Something You Should Know.pdf
- 上海交通大学:《Computational Thinking and Approach》教学资源(课件讲稿)Lecture10 ALGORITHM DESIGN AND ANALYSIS To the Classic.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 11 字符串.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 12 结构、联合与枚举.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 13 高级指针.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 14 内存检测、剖面分析.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 15 输入输出.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 02 C语言简介.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 03 C语言数据类型.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 05 C语言语句.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 06 C语言数组.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 07 函数.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 08 指针.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 09 C程序组织.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 01 算法设计与分析基础.pdf
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 01 Greedy and Dynamic Programming.pptx
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 02 Divide and Conquer.pptx
- 上海交通大学:《C程序与算法设计》课程教学资源(课件讲稿)Lecture 04 C语言运算符与表达式.pdf
- 《C程序与算法设计》课程教学资源(学习资料)快乐的Linux命令行.pdf
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)01 ROS系统安装.doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)02 ROS基本元素实验(一).doc
- 上海交通大学:《ROS机器人操作系统基础与实战》课程教学资源(实验指导书)03 ROS基本元素实验(二).doc