Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

星期一, 9月 03, 2007

如何Debug

可能發生的問題:
無法看變數時:
Variable ??? inaccessible here due to optimization
Project Option Compiler 去掉Optimization

Alt+Ctrl+L 顯示Local Variables
Alt+Ctrl+W 顯示Watch List
Alt+Ctrl+S 顯示Call Stack 目前的執行事件

F5 加入中斷點

Ctrl+F5 加入觀察的變數
Ctrl+F7 看變數目前的值
Ctrl+F4 顯示求值框(未試驗)
Alt+F5 顯示檢查窗(未試驗)

F7 (Trace Into) 以逐行DEBUG,如果遇到另一個副程式(或函數)也跳到該程式內逐行DEBUG
F8 (Step Over) 也可以逐行DEBUG,但如果遇到另一個副程式(或函數)則直接傳回執行後的值
F4 (Run to Cursor) 直接執行到游標停留的行數
Shift+F7 (Trace to next source line) 執行到下一個單元unit(未試驗)
Shift+F8 (Run Until Return) 跑迴圈快一點,Debug跳出CPU視窗,執行到此函數或過程結束處(未試驗)

F9 (Compile and Run,編譯並執行)
Ctrl+Break (Program Pause,程序暫停) 再次按F9才會繼續再開始
Alt+F2 (Program Reset,程序中止)

在Breakpoint list設定中斷點的屬性Properties,這些都是設完屬性後,再按F9
1. Source Breakpoint 源碼中斷點
2. Condition 條件,設定條間中斷
3. Pass Count 通過次數,指令執行第幾次後中斷
4. Group 組,設定不同群組名,將可以用禁止或允許組(Disable Group/Enable Group)

高級除錯
執行序狀態(Thread Status):顯示當前程序中有多少執行序在運行,各執行序的狀態是什麼?參數是什麼?
模組(Modules):顯示當前程序使用了多少模組,其名稱和地址是多少?這對於調試DLL時很有用。
CPU/FPU:在彙編語言層次顯示代碼,這能夠更加精確地觀察程序是如何運行的,各暫存器是怎麼變化的。
過程附帶(Attach Process):為了除錯某些特殊程序(例如Windows 2000下的服務【Service】),允許先運行用戶程序,再運行除錯程序。
遠端除錯(Remote Debug):允許在一台電腦上執行用戶程序,在另外一台電腦上運行Delphi,通過網路進行除錯,這對於除錯大型程序很有用,也能除錯那些對系統有特殊要求的程序。

沒有留言: