⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ads1_2 使用教程 (4)调试 - 开发工具 - arm嵌入式资源站.htm

📁 arm_ads 程序调试教程
💻 HTM
📖 第 1 页 / 共 4 页
字号:
          <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">&nbsp; 添加时间: 2007-02-08 &nbsp; 原文发表时间: 2007-02-08 
      &nbsp; 人气: 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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                  </FONT><STRONG>调 &nbsp;&nbsp;&nbsp; 
试</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>&nbsp;&nbsp;&nbsp; </FONT><FONT 
                        size=2>调试就是在你的程序代码中找到一个问题并着手去解决它的过程。不管是谁,在编程时都难免出现一些输入或程序逻辑上的错误,一旦出现这种问题,很可能你想破了头也找不到错误在哪。这个问题可能只是一个输入上的小错误或者只是一个变量用错了,因此你很难发现它。但是因为这个错误的存在使得你的程序无法实现预期的功能。有时候会更糟糕,以致你的机器都崩溃了。这时,你就必须借助调试来解决问题。</FONT></P>
                        <P><FONT face="Arial, Helvetica, sans-serif" 
                        size=2>&nbsp;&nbsp;&nbsp; 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>&nbsp;&nbsp;&nbsp; </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>&nbsp;&nbsp;&nbsp; </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>&nbsp;&nbsp;&nbsp; </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>&nbsp;&nbsp;&nbsp; </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>&nbsp; 
                          <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 + -