??
字號:
<!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 + -