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