12.4.4.3 顯示函數(shù)調(diào)用
選擇View|Call Stack可以顯示調(diào)棧窗口(Call Stack Window)。調(diào)棧窗口的頂端列出了應(yīng)用程序最近的函數(shù)調(diào)用。
利用調(diào)棧窗口可以退出當(dāng)前跟蹤的函數(shù),可以利用加速菜單項顯示或編輯位于特定函數(shù)調(diào)用處的源代碼
12.5 其它調(diào)試工具
Delphi的內(nèi)置調(diào)試器雖然功能很強(qiáng)大,但并不能勝任所有的任務(wù)。同時由于內(nèi)置調(diào)試器在執(zhí)行中引起程序環(huán)境的細(xì)微變化,所以可能影響錯誤的發(fā)生方式。為此我們需要使用其它調(diào)試工具來完成我們的任務(wù)。這些調(diào)試工具包括Turbo Debugger、WinSight、WinSpector和Browser。Browser將在下一節(jié)中專門進(jìn)行介紹。
12.5.1 Turbo Debugger
Turbo Debugger是Borland公司推出的第三代語言調(diào)試器,它雖然還沒有推出完全支持Delphi的新版本,但也基本能勝任一般Delphi程序的調(diào)試。
Turbo Debugger在字符模式下執(zhí)行,但它是一個真正的Windows程序,它僅使用基于字符的界面。由于Turbo Debugger是一個準(zhǔn)備控制其它程序的特殊程序,因此不可以使用通常Windows任務(wù)切換功能如Alt+Tab。
Turbo Debugger的操作大部分與內(nèi)置調(diào)試器相同或類似。利用File|Open菜單裝入要調(diào)試的文件就可以開始一個調(diào)試過程。
利用Turbo Debugger必須把調(diào)試符號信息儲存在可執(zhí)行文件中。具體操作見(12. 4.1.1)中介紹。
Turbo Debugger與內(nèi)置調(diào)試器相比,有許多新的功能。
首先它提供了許多在低級硬件信息方面的控制?梢酝耆L問CPU的寄存器、標(biāo)志及系統(tǒng)內(nèi)存。用戶可以跟蹤遠(yuǎn)指針到內(nèi)存位置并直接檢查它們的內(nèi)容。Turbo Debugger可以跟蹤進(jìn)到代碼中,即使得不到源代碼也可以。
Turbo Debugger支持許多Windows的特殊功能。它可以跟蹤Windows消息,讓用戶查看程序的局部堆和全局堆,并可以瀏覽包括DLLs在內(nèi)的組成程序的所有代碼單元列表。
另外Turbo Debugger支持遠(yuǎn)程執(zhí)行能力?梢酝ㄟ^串口鏈接或通過支持NetBIOS的網(wǎng)絡(luò)配置Turbo Debugger控制另外一臺機(jī)器。在這種模式下,一臺機(jī)器顯示調(diào)試器屏幕,另一臺機(jī)器顯示被跟蹤的程序。這允許在一個屏上單步執(zhí)行程序并在另一屏上監(jiān)視結(jié)果。
12.5.2 WinSight
WinSight 是一個用于查看Windows 對象并跟蹤消息的發(fā)送和接收的調(diào)試工具。WinSight的圖標(biāo)可以在Delphi程序組中找到。
WinSight界面分為兩部分,上面為對象樹窗口,下面為消息跟蹤窗口。如圖12.9所示。
在實際應(yīng)用中,用戶可能只是對其中的一部分消息感興趣,而又不希望它們淹滅在無用信息之中。為此,用戶可以打開Message菜單并選擇Selected Windows。按住Shift鍵,單擊對象樹窗口中感興趣的對象,所選定對象的任何消息都顯示在消息跟蹤窗口中。
如果用戶只想跟蹤某些消息類,則打開Message菜單并選擇Options ,使用如圖12.10所示的檢查框過濾消息。
12.6.6 小結(jié)
本章介紹的內(nèi)容,核心是如何增強(qiáng)程序的健壯性并提高開發(fā)效率。為此我們首先考察了Delphi的異常處理機(jī)制,而后介紹了幾種程序調(diào)試工具,在您即將結(jié)束基礎(chǔ)篇的學(xué)習(xí)時,這些內(nèi)容是您步入開發(fā)大型應(yīng)用程序的高級程序員行列的必備武器。
相關(guān)推薦:2010年9月計算機(jī)等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |