CodeWarrior 使用教程(7)
CodeWarrior 带有一个集成的调试器,可以让你在 CodeWarrior 主窗口中打开一个窗口来进行调试工作。使用调试器的方法是,从工程菜单中选择 Enable Debugger 项,然后重新编译你的目标文件。完成上述步骤后,你的程序就会在调试窗口中运行,此时你就可以隔离并改正你找到的任何一个问题了。
通常进行调试时总要生成源程序的一个调试目标文件。该目标文件的源文件保持不变,但是需要预先设置置一些选项才能产生该程序的调试版本。通过点击工程窗口的弹出菜单中的调试目标文件,你就可以进入调试状态。
图 5-1: 调试器界面
图 5-1显示了 Hello World 这个程序在 CodeWarrior 调试器中进行调试时的情况。为了能够更方便地演示调试器的工作过程,我们在程序中添加了一小段循环代码(其中使用了 i、x 和 y 等三个变量)。调试器允许对代码执行单步逐行调试。当你在代码中移动时,你还可以查看程序中所有变量的值。在这种“慢速移动(slow motion)”的方式下调试程序,你可以非常清晰地查看到代码的运行情况并很容易地解决问题。
但实际情况是,不是所有的问题都很容易解决的。有些问题就有可能要花费你长达数周的时间去解决。不管是经验多么丰富的编程老手,同样不可避免地要遇到这样的问题。作为一个初学者,你更容易遇到这样的问题,但是,你千万别被这种情况吓倒。请记住,从错误中学习,你能学到更多的东西。
请注意在调试器窗口左上角的那些按钮,它们是用于帮助你进行调试工作的。这些按钮从左到右分别是:运行程序(Run Program)、停止(Stop)、退出(Kill (Quit))、跳过(Step Over)、转入(Step Into)和转出(Step Out)。最后两个命令按钮是让你决定在单步调试程序时,如果遇到一个函数,是否要进入函数内部进行代码调试。或者你也可以使用跳过(Step Over)命令让该函数一次执行完毕,而不进入函数体中单步调试函数的代码,这样可以节省一些时间。如果你不能肯定函数是否正确无误,那么你可以转入(step into)该函数体内部对其进行单步调试。对于初学者,你应该单步调试每一个函数,至少可以练练手嘛! 图 5-1 所示的调试窗口包含三个主要部分:
?
栈窗格(The Stack pane):位于左上方的窗格是显示调用栈(也叫做调用栈的记录)的区域。当你在单步调试源码的过程中调用了多个函数时,在这个区域就显示出调试到达当前状态之前调用过的函数名清单。这个清单会随着你的调试过程,根据你是否转入函数内部的情况随时增减; ?
变量窗格(The Variables pane): 位于右上方的窗格是显示变量名和其值的区域。其中显示的是各个变量的名字和它们的值,而且还可以依据变量的类型让你查看(或修改)这些数据。在图5-1中显示的 Hello World x86 程序这个例子中,有四个变量:c,i,x 和 y。当你在代码中执行单步调试时,这些变量的值就会根据程序执行的过程实时地更新。例如,在调试过程中,你可以注意到后三个变量是如何取得它们的值的(这些值是在循环代码中赋给这些变量的),而变量 c 显示的是一个无意义的值(因为你还没有给 getchar()
输入任何值)。你可以使用这个窗格来发现不正常的变量值,从而发现程序设计上的错误这对于程序的调试成功,非常关键; ?
源代码窗格(The Source pane):位于下方的窗格显示了 Hello World x86 这个程序的 C 语言源代码,它也可以用来显示该代码的汇编语言版本。随着调试的深入进行,仅仅是程序的 C 语言代码可能不能提供足够的调试信息,这是你就需要查看该程序的汇编语言代码。你可以通过该窗口下端的弹出菜单来选择查看程序的源代码、汇编代码或者两者的混合显示。
你可能已经注意到在源代码窗格左边的红色停止标记,该标记表示这是一个断点,它用于告诉调试器在此处停止执行程序。此功能可以帮助你很方便地快速到达程序中地某一位置,然后从此位置处开始调试程序。当你设置了一个断点,调试器运行到断点所在的行就停止下来,等待你的控制命令。在某行程序左边显示的蓝色小箭头是当前程序的计数器,它表示指向的程序行为即将要执行到的语句。在图5-1中,我们已经设置了一个断点以便程序执行到完源代码中的循环块后在第二个输出语句前停下来。设置断点的操作也很简单,只需在你希望调试器停止的程序行的左端点一下鼠标即可。
下面我们来看看关于 CodeWarrior 调试器的一些参数设置。
全局调试器参数设置
通过选择编辑菜单中的“Preferences”项,可以看见 CodeWarrior 调试器有许多全局的参数设置。
设置内容
图 5-2: 调试器全局参数设置显示
设置显示面板(见图5-2)包含了一些决定调试器窗口上如何显示信息的参数设置。当你刚开始使用调试器时,你可以在这里把调试器窗口上的某些文字设置得大一些或小一些,或者用一些特殊的颜色来显示它们。
颜色设置允许你选择在源代码中用于突显观察点(watchpoints)和变量名的文字颜色。这种设置非常有用,可以帮助你在调试代码时很容易地观察到观察点或变量值的变化。观察点可用来帮助你在整个程序中跟踪某个值并将其显示在一个窗口中。
其它设置的用途都解释得很明白了,你也不需要去更它们,默认设计就可以了。当你对调试器了解得更多了一些时,你才可能会的想去修改这些设置。
关于视窗的设置
图 5-3: 关于视窗的设置
在调试程序的过程中,你会发现桌面上很会就挤满了许多打开的窗口。关于视窗的设置(见图5-3)允许你设定在调试中隐藏或显示某些特定的窗口来管理这些窗口。默认的设置是隐藏非调试用的窗口,这在大多数情况下就可以了,不必修改它。
全局设置
全局设置窗格(如图5-4所示)包含了一些用于控制调试器操作方式的选项。
图 5-4: 全局设置
调试过程中缓存修改后的文件这一设置是用于决定修改后的文件需要缓存多长时间用的。缓存文件能够提高调试器的速度,但是要牺牲一些磁盘空间。
其余的设置解释得很清楚了。如果你只是一个初学者,那么默认设置就可以了。
远程连接
图 5-5: 远程连接
最后是远程连接设置(见图5-5)。该设置面板用于设置通过一个 TCP/IP 网络进行远程调试。这是一些高级设置,作为初学者,使用默认设置就可以了。
至于 Java 设置和 Java 调试面板用于使用 Java 语言进行编程的情况的,本课程不涉及这个内容。你可以学习一些相应的课程。
目标文件和工程特定的调试器参数设置
以下是关于被调试的目标文件和工程的设置项。当在 CodeWarrior 的工程窗口的目标文件标签中有一个目标文件被选中时,你再选择编辑菜单中的工程名设置(Project Name Settings)项即可看到这个设置窗口。
图 5-6: 目标文件和工程调试器设置
调试器设置
?
重定位后的库...的位置(Location of Relocated Libraries, etc): 如果你正在调试的文件被移到其它位置了,或者你正在通过一个 TCP/IP 网络来进行远程调试,你就必须将这些文件所在的目录输入到这个文本框中; ?
在应用程序启动时在临时断点处停止(Stop at temp breakpoint on application launch): 默认情况下,这个选项在程序的起始位置中断调试器的运行。但你也可以设置为可在任何断点处中断; ?
自动查找目标库(Auto-target Libraries …… 此处隐藏:2071字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




