Delphi開(kāi)發(fā)的調(diào)試技巧_第1頁(yè)
Delphi開(kāi)發(fā)的調(diào)試技巧_第2頁(yè)
Delphi開(kāi)發(fā)的調(diào)試技巧_第3頁(yè)
Delphi開(kāi)發(fā)的調(diào)試技巧_第4頁(yè)
Delphi開(kāi)發(fā)的調(diào)試技巧_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、轉(zhuǎn)Delphi開(kāi)發(fā)的調(diào)試技巧Delphi開(kāi)發(fā)的調(diào)試技巧1、設(shè)置調(diào)試選項(xiàng)Delphi主菜單。【Project】>【Options】,或單擊工程管理器中的【Project Options】按鈕。顯示Project Options,選擇Complier<1>選中 Debug Information :把調(diào)試信息嵌入到DCU單元文件,會(huì)加大編譯后的DCU文件,但不會(huì)影響最后生成的exe的大小和執(zhí)行速度。同時(shí)激活【Search】菜單中的【Find Error】命令。當(dāng)文件中包含調(diào)試信息并得到一個(gè)運(yùn)行時(shí)錯(cuò)誤(run-time error),記錄下Delphi提供的16進(jìn)制地址,在【Sea

2、rch】>【Find Error】中輸入,Delphi將重新編譯程序,并停留在產(chǎn)生錯(cuò)誤的命令行。<2>Local symbols:決定調(diào)試器能否看到在Implementation中定義的局部變量。<3>Reference infoj選項(xiàng)/Definition Only選項(xiàng)是否產(chǎn)生應(yīng)用程序中對(duì)象標(biāo)識(shí)符的引用信息。信息和對(duì)象代碼存在dcu文件中,可以使用對(duì)象瀏覽器查看。如果Definition Only 選項(xiàng)同時(shí)選中,編譯器將生成標(biāo)識(shí)符定義位置的信息,能夠激活對(duì)象瀏覽器的Refenrence頁(yè)。如果不選,Dcu文件更小。編輯器命令$D Debug Informatio

3、n$L Local Information$Y Symbol Information$C Assertions2、使用內(nèi)部調(diào)試器<1> 命令行參數(shù)在【Run】>【Parameters】中設(shè)置<2>斷點(diǎn)條件斷點(diǎn)使源代碼斷點(diǎn)只有在滿足某個(gè)條件時(shí)才有效。在【View】>Debug windows->【BreakPoints】打開(kāi)“BreakPoint List”對(duì)話框,右擊斷點(diǎn),從彈出菜單中選擇屬性。打開(kāi)“Source BreakPoint Properties”對(duì)話框,在Condition中輸入條件,在對(duì)話框中點(diǎn)擊按鈕【Advanced】,可以設(shè)置更多選項(xiàng)

4、,“Ignore Subsequent Exceptions”使調(diào)試程序遇到下一個(gè)斷點(diǎn)時(shí)不中斷;選中“Handle Subsequent Exception”則調(diào)試程序遇到下一個(gè)斷點(diǎn)時(shí)恢復(fù)默認(rèn)性能。也可以通過(guò)【Run】>【Add BreakPoint】設(shè)置。數(shù)據(jù)斷點(diǎn)特定地址的內(nèi)存被修改時(shí)才使程序掛起?!綬un】>【Add BreakPoint】>【Data BreakPoint】命令添加,或者在BreakPoint List對(duì)話框中右擊,選擇Add Data BreakPoint。輸入監(jiān)測(cè)內(nèi)存區(qū)域的開(kāi)始地址和長(zhǎng)度(字節(jié)數(shù))地址斷點(diǎn)特定地址的代碼執(zhí)行時(shí)就使程序掛起。通常在CPU

5、窗口中設(shè)置。模塊加載地址在一個(gè)模塊加載時(shí)使程序掛起?!綬un】>【Add BreakPoint】斷點(diǎn)組使用斷點(diǎn)組,任何一個(gè)斷點(diǎn)都能設(shè)置成使其他斷點(diǎn)有效或無(wú)效,可以通過(guò)斷點(diǎn)算法來(lái)查找特殊的錯(cuò)誤。3、單步執(zhí)行【Step Over】 (F8功能鍵),【Trace Into】(F7功能鍵),【Run to Cursor】(F4功能鍵)臨時(shí)使程序暫停【Program Pause】。Ctrl+F5 【Add Watch】,Ctrl+F7 【Evaluate/Modify】4、其他工具<1>Debug Inspector 適合查看由許多數(shù)據(jù)組成的復(fù)合數(shù)據(jù),諸如類(lèi)和記錄。單擊省略號(hào)按鈕,可以

6、修改數(shù)據(jù)的值。<2>計(jì)算和修改Evaluate/Modify,可以改變變量的值,但不能訪問(wèn)超出域外的函數(shù)和變量。<3>訪問(wèn)調(diào)用棧 【View】>【Debug Windows】>【Call Stack】,可以看到函數(shù)和過(guò)程的調(diào)用情況及傳遞給他們的參數(shù)。<4>查看線程,如果應(yīng)用程序運(yùn)行了多線程,可以通過(guò)【View】【Debug Windows】【Threads】查看線程的狀態(tài),可以查看某一線程的源代碼,選擇當(dāng)前線程。(ctrl+alt+t)<5>事件日志記錄調(diào)試期間發(fā)生的事情?!綱iew】【Debug Windows】(ctrl+alt+

7、v),可以在【Tools】【Debugger Options】對(duì)話框“Debugger”選項(xiàng)組或事件日志的本地菜單配置事件日志功能。記錄的事件包括:進(jìn)程開(kāi)始、終止、模塊加載斷點(diǎn)、發(fā)給應(yīng)用程序的Windows消息以及使用OutputDebugString()的輸出。<6>模塊視圖獲取所有加載到應(yīng)用程序進(jìn)程中的模塊。(ctrl+alt+m)在過(guò)程、函數(shù)、事件內(nèi)部, SHIFT+CTRL+向上的方向鍵 可跳躍到相應(yīng)的過(guò)程、函數(shù)、事件的定義相反,在過(guò)程、函數(shù)、事件的定義處,SHIFT+CTRL+向下的方向鍵 可跳躍到具體過(guò)程、函數(shù)、事件內(nèi)部CTRL+ SHIFT + C:編寫(xiě)申明或者補(bǔ)上函

8、數(shù). 如: procedure TT.A(AA: string); /函數(shù)申明 安下:CTRL+ SHIFT + C后,會(huì)寫(xiě)上 procedure TT.A(AA: string); begin end;SHIFT+CTRL+E 顯示 EXPLORERcrtl + shift + n (n=1,2,3,4.) 定義書(shū)簽 crtl + n (n=1,2,3,4.) 跳到書(shū)簽nALT+鼠標(biāo)左鍵可以塊選代碼,刪除對(duì)齊的重復(fù)代碼非常有用。 Ctrl+B           Buffer List窗口。 Ctrl+I

9、0;          同Tab鍵。 Ctrl+M           同Enter鍵。 Ctrl+N           同Enter鍵,但光標(biāo)位置保持不變。 Ctrl+T           刪除光標(biāo)右邊的一個(gè)單詞。 Ctrl+Y      &#

10、160;    刪除光標(biāo)所在行。Ctrl+Shift+    光標(biāo)在函數(shù)體內(nèi)時(shí),將光標(biāo)快速移至當(dāng)前函數(shù)聲明處。 Ctrl+Shift+    光標(biāo)在函數(shù)聲明行時(shí),將光標(biāo)快速移至函數(shù)定義處。 Ctrl+Shift+C     聲明一個(gè)過(guò)程或函數(shù)后,直接生成過(guò)程或函數(shù)的名稱、begin、end; Ctrl+Shift+E     光標(biāo)在Edit窗口和Explorer窗口間切換。 Ctrl+Shift+J     

11、;彈出Delphi語(yǔ)句提示窗口,選擇所需語(yǔ)句將自動(dòng)完成一條語(yǔ)句。 Ctrl+Shift+T     在光標(biāo)行加入To-Do注釋。 Ctrl+Shift+Y     刪除光標(biāo)之后至本行末尾之間的文本。Ctrl+F3          Call Stack窗口。 Ctrl+F4          等于File菜單中的Close項(xiàng)。Ctrl+鼠標(biāo)轉(zhuǎn)輪    加速滾屏。Shift+F8

12、         調(diào)試時(shí)彈出CPU窗口。 Shift+F10        等于鼠標(biāo)右鍵(Windows快捷鍵)。Alt+F4           關(guān)閉所有編輯框中打開(kāi)的源程序文件,但不關(guān)閉項(xiàng)目。CTRL+ENTER 定位到單元文件 Shitf+箭頭 選擇 如果同時(shí)按住Alt +Shitf+箭頭, 再進(jìn)行選擇, 則是一種區(qū)域選擇, 而不是行選擇, 粘貼的 時(shí)候也就是插入粘貼了. F9 運(yùn)行 CTR

13、L+ F9編譯 F8 STEP OVER (步進(jìn)式調(diào)試不進(jìn)入子過(guò)程) F7 TRACE INTO (步進(jìn)式調(diào)試同時(shí)追蹤進(jìn)入子過(guò)程) F11,F12 切換EDITOR,INSPECTOR,FORM DESIGNER. CTRL+ALT+F11 彈出工程管理器 CTRL+F彈出查找對(duì)話框 CTRL+R彈出替換對(duì)話框 CTRL+ Shitf+C 類(lèi)過(guò)程代碼補(bǔ)全(只要在定義部分定義一過(guò)程或一函數(shù)頭則自動(dòng)幫你生成 實(shí)現(xiàn)部分的套架;反之也成) 但是DELPHI 中怎樣跳格呢? 其實(shí)也是有辦法的, 就是CTRL+K,I向后, CTRL+K,U向前. 有時(shí)候反復(fù)輸入什么東西是不是很繁? CTRL+SHIFT+

14、R錄制鍵盤(pán)宏, 比如我經(jīng)常做的就是: 下箭頭-下箭頭-HOME-回車(chē)-CTRL+V, 再鍵入一次CTRL+SHIFT+R錄制完成, 之后您可以使用 CTRL+SHIFT+P, 重復(fù)宏,還是省了一些事的. 另外在DELIPHI中有一個(gè)很有用的快鍵極其有用 這就是CTRL+J;列如:在一過(guò)程中你輸入ifb后再按CTRL+J你回去看看效果吧,可能你會(huì)大 吃一驚。這就是Code Insight.ctrl+shift+u /塊縮進(jìn)/反縮進(jìn) ctrl+shift+i取消書(shū)簽: 在書(shū)簽N處,再按一次 SHIFT + CTRL + NCtrl+E 一種查找挺好的,其余的都被你們說(shuō)玩了按住Ctrl再點(diǎn)對(duì)象、過(guò)程

15、、函數(shù),轉(zhuǎn)到其定義原型,即便是Delphi VCL源代碼中的Unit。ALT+F4 關(guān)閉DELPHI Ctrl+K+O,Ctrl+K+N 將選中的整塊代碼都轉(zhuǎn)為小寫(xiě)或大寫(xiě) Ctrl+F 查找 Ctrl+L 繼續(xù)查找在Inspector,可以用Ctrl+Tab切換Properties頁(yè)和Events頁(yè) Ctrl+Enter可進(jìn)入相應(yīng)的設(shè)置,如在Preperties頁(yè)的Font按Ctrl+Enter 在Events中按Ctrl+Enter可進(jìn)入相應(yīng)代碼編輯Ctrl+Shift+i : 同時(shí)推進(jìn)2格 Ctrl+Shift+u : 同時(shí)退后2格/red還有一招,我經(jīng)常用的,不知大家常不常用 按住ALT

16、用鼠標(biāo)選擇文本 或者按住ALT加SHIFT,用方向鍵選擇文本 沒(méi)試過(guò)就趕快去試試!在form上放一個(gè)tedit控件,然后在代碼中寫(xiě)入“edit1.”,稍等一下,會(huì)出現(xiàn)提示。 在“edit1.”未寫(xiě)入前,要想使用這個(gè)提示功能,可以按住windows鍵,然后按空白鍵。 (只有windows鍵盤(pán)可以用此功能?。〤TRL+SPACE與輸入法沖突,把輸入法的有無(wú)輸入法快捷鍵從CTRL+SPACE該為其他鍵組合 就行了,我是改成了CTRL+SHIFT+SPACE. 然后在UNIT中,比如輸入fo這是按下CTRL+SPACE就會(huì)出現(xiàn)一系列以fo開(kāi)頭的變量,函數(shù)。Ctrl+Backspace 后退刪除一個(gè)詞。

17、好像是到 . 為止。在object inspector窗口按tab鍵將光標(biāo)移動(dòng)到屬性名區(qū),然后鍵入屬性名的開(kāi)頭 字母可快速定位到該屬性-一、以下快捷鍵指的是對(duì)窗體表格上組件的操作: 快捷鍵1: 【Ctrl+UP】向上移動(dòng)當(dāng)前組件(精確); 【Ctrl+Left】向左移動(dòng)當(dāng)前組件(精確); 【Ctrl+Down】向下移動(dòng)當(dāng)前組件(精確); 【Ctrl+Right】向右移動(dòng)當(dāng)前組件(精確); 注: 以上快接鍵中再加Shift進(jìn)行組合(比如【Ctrl+Shift+Right】)即可實(shí)現(xiàn)粗略調(diào)整; 快捷鍵2: 【Shift+UP】減小當(dāng)前組件的高度; 【Shift+Left】減小當(dāng)前組件的寬度; 【S

18、hift+Down】增加當(dāng)前組件的高度; 【Shift+Right】增加當(dāng)前組件的寬度; 注: 以上Up,Left等指的是方向鍵;二、以下快捷鍵指的是在對(duì)象觀察器上的操作: 快捷鍵3: 【F11】切換到對(duì)象觀察器(注:如果連續(xù)按F11則將實(shí)現(xiàn)在對(duì)象觀察器、窗體表格、代碼編輯器之間切換); 【Ctrl+Down】下拉當(dāng)前窗體的組件列表; 【Ctrl+Enter】編輯帶.的屬性值(如組件的字體TFont); 【Alt+Down】下拉組件當(dāng)前屬性選單隊(duì)列(如Align->alNone,alLeft,alRight等); 【Ctrl+Tab】在屬性列表及事件列表中切換;三、菜單快捷鍵: 快捷鍵4

19、: 【F12】,【Shift+F12】,【Ctrl+F12】等在Delphi的菜單中已有定義的在此不必羅嗦.技巧: 如何選擇被組件覆蓋了的窗體(比如某組件的Align屬性為alClient)? 方法一、按ESC鍵,一層一層的往后選,直到窗體被選為當(dāng)前組件為止; 方法二、按Shift的同時(shí)單擊鼠標(biāo)左鍵,一步即可選定(推薦); 方法三、按F11選定對(duì)象觀察器,然后切換到屬性列表,再用上面快捷鍵3中的【Ctrl+Down】Ctrl+UP向上移動(dòng)選中組件(微調(diào)); Ctrl+Left向左移動(dòng)選中組件(微調(diào)); Ctrl+Down向下移動(dòng)選中組件(微調(diào)) ;Ctrl+Right向右移動(dòng)選中組件(微調(diào));

20、 Shift+UP減小選中組件的高度; Shift+Left減小選中組件的寬度; Shift+Down增加選中組件的高度; Shift+Right增加選中組件的寬度;Ctrl+鼠標(biāo)拖動(dòng) 可以選中一個(gè)控件上層的其他控件而不選中其本身!DELPHI中的快捷方式一覽(完全正式版)1.SHIFT+鼠標(biāo)左鍵    先選中任一控件,按鍵后可選中窗體(選中控件后按Esc效果一樣)2.Shift+F8          調(diào)試時(shí)彈出CPU窗口。3.Shift+F10        &

21、#160;等于鼠標(biāo)右鍵(Windows快捷鍵)。4.Shitf+箭頭        選擇5.shift +F12        快速查找窗體并打開(kāi)6.F7               (步進(jìn)式調(diào)試同時(shí)追蹤進(jìn)入子過(guò)程)7.F8               (步進(jìn)式調(diào)試不進(jìn)入子過(guò)程)

22、8.F9                運(yùn)行9.F12               切換EDITOR,FORM10.Alt+F4           關(guān)閉所有編輯框中打開(kāi)的源程序文件,但不關(guān)閉項(xiàng)目11.ALT+鼠標(biāo)左鍵      可以塊選代碼,用來(lái)刪除對(duì)齊的重復(fù)代碼非常有用12.

23、Ctrl+F9          編譯13.Ctrl+shift+N(n=1,2,3,4.) 定義書(shū)簽14.Ctrl+n(n=1,2,3,4.)跳到書(shū)簽n15.CTRL +SHIFT+N    在書(shū)簽N處,再按一次 取消書(shū)簽16.Ctrl+PageUp      將光標(biāo)移至本屏的第一行,屏幕不滾動(dòng)17.Ctrl+PageDown    將光標(biāo)移至本屏的最后一行,屏幕不滾動(dòng)18.Ctrl+        &#

24、160; 向下滾動(dòng)屏幕,光標(biāo)跟隨滾動(dòng)不出本屏19.Ctrl+          向上滾動(dòng)屏幕,光標(biāo)跟隨滾動(dòng)不出本屏20.Ctrl+Home        將光標(biāo)移至文件頭21.Ctrl+End         將光標(biāo)移至文件尾22.Ctrl+B           Buffer List窗口23.Ctrl+I   &#

25、160;       同Tab鍵24.CTRL+J           (彈出Delphi語(yǔ)句提示窗口,選擇所需語(yǔ)句將自動(dòng)完成一條語(yǔ)句)代碼模板25.Ctrl+M           同Enter鍵。26.Ctrl+N           同Enter鍵,但光標(biāo)位置保持不變27.Ctrl+T  &#

26、160;        刪除光標(biāo)右邊的一個(gè)單詞28.Ctrl+Y           刪除光標(biāo)所在行29.CTRL+C           復(fù)制30.CTRL+V           粘貼31.CTRL+X          &#

27、160;剪切32.CTRL+Z           還原(Undo)33.CTRL+S           保存34.Ctrl+F           查找35.Ctrl+L           繼續(xù)查找36.Ctrl+r      

28、60;    替換37.CTRL+ENTER       定位到單元文件38.Ctrl+F3          彈出Call Stack窗口39.Ctrl+F4          等于File菜單中的Close項(xiàng)40.Ctrl+Backspace   后退刪除一個(gè)詞,直到遇到一個(gè)分割符41.Ctrl+鼠標(biāo)轉(zhuǎn)輪    加速滾屏42.Ctrl+O+U  

29、0;      切換選擇塊的大小寫(xiě)(注意松開(kāi)O后再按U,Ctrl保持按下)43.Ctrl+K+O         切換選擇塊為小寫(xiě)(注意松開(kāi)K后再按O,Ctrl保持按下)44.Ctrl+K+N         切換選擇塊為大寫(xiě)(注意松開(kāi)K后再按N,Ctrl保持按下)45.Ctrl+Shift+G     插入GUID46.Ctrl+Shift+T     在

30、光標(biāo)行加入To-Do注釋47.Ctrl+Shift+Y     刪除光標(biāo)之后至本行末尾之間的文本48.CTRL+SHIFT+C     編寫(xiě)申明或者補(bǔ)上函數(shù),絕好!49.CTRL+SHIFT+E     顯示EXPLORER50.Ctrl+Tab         在Inspector中切換Properties頁(yè)和Events頁(yè)51.CTRL+SHIFT+U     代碼整塊左移

31、2個(gè)空格位置52.CTRL+SHIFT+I     代碼整塊右移2個(gè)空格位置53.CTRL+SHIFT+    在過(guò)程、函數(shù)、事件內(nèi)部, 可跳躍到相應(yīng)的過(guò)程、函數(shù)、事                     件的定義(在interface和implementation之間來(lái)回切換)54.CTRL+SHIFT+    在過(guò)程、函數(shù)、事件的定義處, 可跳躍到具體過(guò)程、函數(shù)、事件內(nèi)部(同上)55.Tab              在object inspector窗口按tab鍵將光標(biāo)移動(dòng)到屬性名區(qū),然后鍵入屬性名的開(kāi)頭           &

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論