程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第十二章-異常處理與程序調試(三)(2)

第十二章-異常處理與程序調試(三)(2)

編輯:Delphi

12.4.4.1 監視表達式 

監視列表窗口(Watch List Window)顯示程序運行中當前監視表達式的值。

選擇View|Watches可以打開監視列表窗口。

從Code Editor中添加一個監視表達式最方便的方法是:

1.選中要監視的表達式;

2.從Code Editor加速菜單中選擇Add Watch把表達式添加到監視列表窗口。

也可以利用下面的方法產生一個監視表達式:

1.用下列方法之一打開監視屬性對話框(Watch Properties Dialog Box):

●主菜單中選擇Run|Add Watch

●在光標處從Code Editor加速菜單中選擇Add Watch

●按Ctrl-F5

●雙擊監視列表窗口中的一個監視表達式

●從監視列表窗口選定一個表達式而後從加速菜單中選擇Edit

2.在監視屬性對話框的Expression下拉列表框中輸入或選擇一個被監視的表達式;

3.設定表達式的顯示格式和使能狀態。

與斷點類似,利用加速菜單也可以使監視表達式功能喪失、恢復或刪除監視表達式。 

12.4.4.2 計算/修改表達式 

 選擇Run|Evaluate /Modify可打開計算/修改對話框。當單擊Evaluate按鈕時,Expression編輯框中表達式的值顯示在Result域中。

Expression中可以輸入或選擇任何合法的表達式(包括對象的屬性),但不包括;

1.包含有當前執行點不能引用的局部或靜態變量的表達式;

2.函數或過程調用。

Expression中的表達式可以帶特定的格式字符用於規定其顯示格式。 格式字符及其功能如下表。 

表12.8  格式字符及其功能

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

格式字符 功 能

─────────────────────────────────

$,H,X 以十六進制格式顯示標量

D 以十進制格式顯示標量

C 把ASCII碼在0..31的特殊字等顯示為ASCII碼圖形

Fn 用n個有效數字顯示浮點數

M 以十六進制方式顯示一變量的內存轉儲值

P 以段和偏移量格式顯示指針。兩部分皆為四位十六進制值

R 顯示記錄、對象的域名和值(例如 X:5,Y:2)

S 用ASCII碼顯示字符串(包括特殊字符)。用於修改內存轉儲值

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

修改表達式的值常用於驗證錯誤解決方案的正確性。在Expression編輯框中輸入或選定欲修改的表達式,單擊Evaluate按鈕觀察表達式的當前值。而後在New Value編輯框中輸入或選中一個新值,並單擊Modify按鈕確認並更新數據項。這種修改只影響特定的程序運行。

修改表達式的值(特別是指針變量和數組下標)可能會引起無法預計的後果。因而使用中要特別小心。 

12.4.4.3 顯示函數調用 

選擇View|Call Stack可以顯示調棧窗口(Call Stack Window)。調棧窗口的頂端列出了應用程序最近的函數調用。

利用調棧窗口可以退出當前跟蹤的函數,可以利用加速菜單項顯示或編輯位於特定函數調用處的源代碼

12.5 其它調試工具 

Delphi的內置調試器雖然功能很強大,但並不能勝任所有的任務。同時由於內置調試器在執行中引起程序環境的細微變化,所以可能影響錯誤的發生方式。為此我們需要使用其它調試工具來完成我們的任務。這些調試工具包括Turbo Debugger、WinSight、WinSpector和Browser。Browser將在下一節中專門進行介紹。 

12.5.1 Turbo Debugger 

Turbo Debugger是Borland公司推出的第三代語言調試器,它雖然還沒有推出完全支持Delphi的新版本,但也基本能勝任一般Delphi程序的調試。

Turbo Debugger在字符模式下執行,但它是一個真正的Windows程序,它僅使用基於字符的界面。由於Turbo Debugger是一個准備控制其它程序的特殊程序,因此不可以使用通常Windows任務切換功能如Alt+Tab。

Turbo Debugger的操作大部分與內置調試器相同或類似。利用File|Open菜單裝入要調試的文件就可以開始一個調試過程。

利用Turbo Debugger必須把調試符號信息儲存在可執行文件中。具體操作見(12. 4.1.1)中介紹。

Turbo Debugger與內置調試器相比,有許多新的功能。

首先它提供了許多在低級硬件信息方面的控制。可以完全訪問CPU的寄存器、標志及系統內存。用戶可以跟蹤遠指針到內存位置並直接檢查它們的內容。Turbo Debugger可以跟蹤進到代碼中,即使得不到源代碼也可以。

Turbo Debugger支持許多Windows的特殊功能。它可以跟蹤Windows消息,讓用戶查看程序的局部堆和全局堆,並可以浏覽包括DLLs在內的組成程序的所有代碼單元列表。

另外Turbo Debugger支持遠程執行能力。可以通過串口鏈接或通過支持NetBIOS的網絡配置Turbo Debugger控制另外一台機器。在這種模式下,一台機器顯示調試器屏幕,另一台機器顯示被跟蹤的程序。這允許在一個屏上單步執行程序並在另一屏上監視結果。 

12.5.2 WinSight

WinSight 是一個用於查看Windows 對象並跟蹤消息的發送和接收的調試工具。WinSight的圖標可以在Delphi程序組中找到。

WinSight界面分為兩部分,上面為對象樹窗口,下面為消息跟蹤窗口。如圖12.9所示。

在實際應用中,用戶可能只是對其中的一部分消息感興趣,而又不希望它們淹滅在無用信息之中。為此,用戶可以打開Message菜單並選擇Selected Windows。按住Shift鍵,單擊對象樹窗口中感興趣的對象,所選定對象的任何消息都顯示在消息跟蹤窗口中。

如果用戶只想跟蹤某些消息類,則打開Message菜單並選擇Options ,使用如圖12.10所示的檢查框過濾消息。 

12.6.6 小結 

本章介紹的內容,核心是如何增強程序的健壯性並提高開發效率。為此我們首先考察了Delphi的異常處理機制,而後介紹了幾種程序調試工具,在您即將結束基礎篇的學習時,這些內容是您步入開發大型應用程序的高級程序員行列的必備武器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved