📄 第五课 调 试.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0057)http://www.pdazone.com.cn/develop/CodeWarrior/Lesson5.htm -->
<HTML><HEAD><TITLE>PDA开发</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=Content-Language content=zh-cn>
<STYLE type=text/css>.font {
FONT-SIZE: 10pt; LINE-HEIGHT: 13pt
}
.fontlittle {
FONT-SIZE: 9pt
}
A {
TEXT-TRANSFORM: none; TEXT-DECORATION: none
}
A:hover {
TEXT-DECORATION: underline
}
</STYLE>
<META content="MSHTML 6.00.2462.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=650 border=0>
<TBODY>
<TR align=middle>
<TD align=right width="100%"><IMG height=35
src="第五课 调 试.files/develop.gif" width=648 border=0> </TD></TR>
<TR align=middle>
<TD align=right width="100%"></TD></TR>
<TR align=middle>
<TD width="100%"><IMG height=5 src="" width=2 border=0> </TD></TR>
<TR align=middle>
<TD class=font width="100%">
<P align=left>><A href="http://www.pdazone.com.cn/"
target=_parent>首页</A>>PDA开发 </P></TD></TR>
<TR align=middle>
<TD width="100%"><IMG height=5 src="" width=2 border=0> </TD></TR>
<TR align=middle>
<TD width="100%">
<P align=center><SMALL>CodeWarrior 使用教程</SMALL></P></TD></TR>
<TR>
<TD width="100%">
<P align=center><FONT size=3><B>第五课</B><FONT
face="Arial, Helvetica, sans-serif">
</FONT><STRONG>调 试</STRONG></FONT></P></TD></TR>
<TR align=middle>
<TD class=font width="100%">
<P align=center>Translated from <STRONG><FONT
face=Arial>CodeWarriorU.COM</FONT></STRONG></P>
<P align=center> </P>
<P align=center><BR></P></TD></TR>
<TR>
<TD width="100%">
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="88%" border=0>
<TBODY>
<TR>
<TD class=font width="100%"><FONT face=幼圆 color=#000000
size=3><B><B>关于调试</B></B></FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>
<BLOCKQUOTE><I>
<P>Purging pesky pests proves productive for programmers!</I>
</FONT></P></BLOCKQUOTE>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>调试就是在你的程序代码中找到一个问题并着手去解决它的过程。不管是谁,在编程时都难免出现一些输入或程序逻辑上的错误,一旦出现这种问题,很可能你想破了头也找不到错误在哪。这个问题可能只是一个输入上的小错误或者只是一个变量用错了,因此你很难发现它。但是因为这个错误的存在使得你的程序无法实现预期的功能。有时候会更糟糕,以致你的机器都崩溃了。这时,你就必须借助调试来解决问题。</FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> CodeWarrior </FONT><FONT
size=2>带有一个集成的调试器,可以让你在 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>CodeWarrior </FONT><FONT
size=2>主窗口中打开一个窗口来进行调试工作。使用调试器的方法是,从工程菜单中选择 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Enable Debugger
</FONT><FONT
size=2>项,然后重新编译你的目标文件。完成上述步骤后,你的程序就会在调试窗口中运行,此时你就可以隔离并改正你找到的任何一个问题了。</FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>通常进行调试时总要生成源程序的一个调试目标文件。该目标文件的源文件保持不变,但是需要预先设置置一些选项才能产生该程序的调试版本。通过点击工程窗口的弹出菜单中的调试目标文件,你就可以进入调试状态。</FONT></P><FONT
face="Arial, Helvetica, sans-serif" size=2>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY></FONT>
<TR>
<TD><FONT size=2><IMG height=484
alt="Figure 5-1: The debugger does its thing."
src="第五课 调 试.files/icwwL5_fig1.gif" width=542
align=left> </FONT></TD></TR>
<TR>
<TD align=middle>
<P align=center><I><FONT size=1>图 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=1>5-1: </FONT><FONT
size=1>调试器界面</FONT></I></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT size=2>图 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>5-1</FONT><FONT
size=2>显示了 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Hello World </FONT><FONT size=2>这个程序在 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>CodeWarrior </FONT><FONT
size=2>调试器中进行调试时的情况。为了能够更方便地演示调试器的工作过程,我们在程序中添加了一小段循环代码</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>其中使用了 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>i</FONT><FONT size=2>、</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>x </FONT><FONT size=2>和
</FONT><FONT face="Arial, Helvetica, sans-serif" size=2>y
</FONT><FONT size=2>等三个变量</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>)</FONT><FONT
size=2>。调试器允许对代码执行单步逐行调试。当你在代码中移动时,你还可以查看程序中所有变量的值。在这种“慢速移动</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(slow motion)</FONT><FONT
size=2>”的方式下调试程序,你可以非常清晰地查看到代码的运行情况并很容易地解决问题。</FONT></P>
<BLOCKQUOTE>
<P><EM><FONT
size=2>但实际情况是,不是所有的问题都很容易解决的。有些问题就有可能要花费你长达数周的时间去解决。不管是经验多么丰富的编程老手,同样不可避免地要遇到这样的问题。作为一个初学者,你更容易遇到这样的问题,但是,你千万别被这种情况吓倒。请记住,从错误中学习,你能学到更多的东西。</FONT></EM></P></BLOCKQUOTE>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT
size=2>请注意在调试器窗口左上角的那些按钮,它们是用于帮助你进行调试工作的。这些按钮从左到右分别是:运行程序</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(Run Program)</FONT><FONT
size=2>、停止</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>(Stop)</FONT><FONT size=2>、退出</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(Kill (Quit))</FONT><FONT
size=2>、跳过</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>(Step Over)</FONT><FONT size=2>、转入</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(Step Into)</FONT><FONT
size=2>和转出</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>(Step Out)</FONT><FONT
size=2>。最后两个命令按钮是让你决定在单步调试程序时,如果遇到一个函数,是否要进入函数内部进行代码调试。或者你也可以使用跳过</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(Step Over)</FONT><FONT
size=2>命令让该函数一次执行完毕,而不进入函数体中单步调试函数的代码,这样可以节省一些时间。如果你不能肯定函数是否正确无误,那么你可以转入</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(step into)</FONT><FONT
size=2>该函数体内部对其进行单步调试。对于初学者,你应该单步调试每一个函数,至少可以练练手嘛! </FONT></P>
<P><FONT face="Arial, Helvetica, sans-serif"
size=2> </FONT><FONT size=2>图 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>5-1 </FONT><FONT
size=2>所示的调试窗口包含三个主要部分:</FONT>
<UL>
<LI><B><FONT size=2>栈窗格</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(The Stack
pane)</FONT><FONT size=2>:</B>位于左上方的窗格是显示调用栈</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>也叫做调用栈的记录</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>)</FONT><FONT
size=2>的区域。当你在单步调试源码的过程中调用了多个函数时,在这个区域就显示出调试到达当前状态之前调用过的函数名清单。这个清单会随着你的调试过程,根据你是否转入函数内部的情况随时增减;
</FONT>
<LI><B><FONT size=2>变量窗格</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(The Variables
pane):</B> </FONT><FONT
size=2>位于右上方的窗格是显示变量名和其值的区域。其中显示的是各个变量的名字和它们的值,而且还可以依据变量的类型让你查看</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>或修改</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>)</FONT><FONT size=2>这些数据。在图</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>5-1</FONT><FONT
size=2>中显示的 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>Hello World x86 </FONT><FONT
size=2>程序这个例子中,有四个变量:</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>c</FONT><FONT
size=2>,</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>i</FONT><FONT size=2>,</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>x </FONT><FONT size=2>和
</FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>y</FONT><FONT
size=2>。当你在代码中执行单步调试时,这些变量的值就会根据程序执行的过程实时地更新。例如,在调试过程中,你可以注意到后三个变量是如何取得它们的值的</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>这些值是在循环代码中赋给这些变量的</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>)</FONT><FONT
size=2>,而变量 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>c </FONT><FONT size=2>显示的是一个无意义的值</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(</FONT><FONT
size=2>因为你还没有给 </FONT><FONT face="Arial, Helvetica, sans-serif"
size=2>getchar() </FONT><FONT size=2>输入任何值</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>)</FONT><FONT
size=2>。你可以使用这个窗格来发现不正常的变量值,从而发现程序设计上的错误这对于程序的调试成功,非常关键;</FONT>
<LI><B><FONT size=2>源代码窗格</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(The Source
pane)</FONT><FONT size=2>:</B>位于下方的窗格显示了 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>Hello World x86
</FONT><FONT size=2>这个程序的 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>C </FONT><FONT
size=2>语言源代码,它也可以用来显示该代码的汇编语言版本。随着调试的深入进行,仅仅是程序的 </FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>C </FONT><FONT
size=2>语言代码可能不能提供足够的调试信息,这是你就需要查看该程序的汇编语言代码。你可以通过该窗口下端的弹出菜单来选择查看程序的源代码、汇编代码或者两者的混合显示。
</FONT></LI></UL>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -