📄 ads1_2 使用教程 (4)调试 - 开发工具 - arm嵌入式资源站.htm
字号:
<TD><A
href="http://www.embed-game.com/article_html/d0/377.html">ADS1.2
使用教程 (3)续 编译</A></TD></TR>
<TR>
<TD><A
href="http://www.embed-game.com/article_html/8f/376.html">ADS1.2
使用教程 (7)库</A></TD></TR>
<TR>
<TD><A
href="http://www.embed-game.com/article_html/9c/375.html">ADS1.2
使用教程 (5)定制</A></TD></TR></TBODY></TABLE></DIV></TD>
<TD vAlign=top><!-- 中间部分 -->
<DIV class=bai>
<DIV class="t3 bcg bgg bg_yellow">ADS1.2 使用教程 (4)调试</DIV>
<DIV class="b3 bcg mb12"> 添加时间: 2007-02-08 原文发表时间: 2007-02-08
人气: 236
<HR>
<TABLE>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width=650 border=0>
<TBODY>
<TR>
<TD width="100%">
<P align=center><FONT size=3><STRONG>第四课</STRONG><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 twffan="done">
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="88%" border=0>
<TBODY>
<TR>
<TD class=font width="100%"><FONT face=幼圆 color=#000000
size=3><STRONG><STRONG>关于调试</STRONG></STRONG></FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>
<BLOCKQUOTE><EM>
<P>Purging pesky pests proves productive for
programmers!</P></EM></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 twffan="done">
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY></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>
</P>
<UL>
<LI><STRONG><FONT size=2>栈窗格</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(The Stack
pane)</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></STRONG>位于左上方的窗格是显示调用栈
<LI><STRONG><FONT size=2>变量窗格</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(The
Variables pane):</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>
</STRONG>
<LI><STRONG><FONT size=2>源代码窗格</FONT><FONT
face="Arial, Helvetica, sans-serif" size=2>(The Source
pane)</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>C </FONT><FONT
size=2>语言代码可能不能提供足够的调试信息,这是你就需要查看该程序的汇编语言代码。你可以通过该窗口下端的弹出菜单来选择查看程序的源代码、汇编代码或者两者的混合显示。
</FONT></STRONG>位于下方的窗格显示了 </LI></UL>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -