LabVIEW程序的調試方式
圖 7 Breakpoint Manager對話框
1.4高亮工具(Highlight)
高亮工具是LabVIEW相對于傳統的文本式語言的IDE環(huán)境所獨有的調試工具,也是數據流程序設計思想的一種體現。打開工具欄中的Highlight工具(如圖 8所示)并單擊“Run”按鈕,程序開始在Highlight模式下運行。此時根據數據流的運行順序,LabVIEW將在各個節(jié)點的輸入和輸出的端子上顯示當前端子上的數據,并且以小圓點的方式顯示數據流的執(zhí)行方式。程序員可以比較清楚地觀察到數據流的走向以及源代碼的執(zhí)行情況,這極大地方便了LabVIEW開發(fā)者對某部分代碼的詳細調試。圖 8 Highlight工具
對初學者而言,這種調試方式無疑是直觀和清楚的。但是同時對一些VI也會帶來一些影響,如某些對時間有著嚴格控制的VI。由于在Highlight模式中,LabVIEW會減慢程序執(zhí)行的速度,因此有些與時間有關的事件或者Bug會被掩蓋和忽略。這也是為什么有時候程序在Highlight模式下運行正常,而回到普通模式時卻無法返回正確的結果。此時,就需要使用Breakpoint和Probe工具(下一小節(jié)介紹)聯合調試,找到程序出現問題的原因。
1.5探針工具(Probe)
探針并不是LabVIEW所特有的調試工具,在很多的文本式語言的IDE中都存在著Watch窗口用來實時監(jiān)視某些變量的值,LabVIEW中的探針與此類似,也是用來實時監(jiān)測程序背面板中任一連接線(不是任一節(jié)點)上的值。右擊源代碼中任一連線處,選擇Probe菜單項將彈出當前位置的探針,如圖 9所示。LabVIEW會自動判斷當前位置的數據類型從而調用不同的探針以顯示當前位置的數據。當VI的背面板關閉時,那么該VI中所有的探針窗口也會自動關閉。運行VI,當運行到探針的位置時將在探針窗口中立即顯示當前的值。
圖 9 Probe工具
為了定位到錯誤源或者找到某一時刻的運行結果,往往程序員需要配合斷點和探針工具,在適當的位置增加斷點,而適當的位置加入探針?;蛘咧苯釉O置探針工具,讓探針捕獲到某一特定的條件是程序暫停運行。如在圖 9中,選擇Custom Probe>>Conditional String Probe菜單項將彈出圖 10所示的探針窗口。在Condition頁中,可以設置程序暫停的條件。當滿足該條件時,程序將立即在當前探針位置暫停。
圖 10 Conditional String Probe
從圖 9和圖 10可以看出,探針的主要功能就是將當前連線上的數據以控件(Indicator)的形式表示出來。由于在LabVIEW中,數據的顯示方式是可以自定義的,如使用Type Def.控件修改某些控件的外觀或者將String控件以****的密碼方式顯示,因此LabVIEW提供了自定義探針技術允許程序員根據實際情況使用任意預定義的探針。
在圖 9的快捷菜單中選擇Custom Probe>>New…菜單項,將彈出圖 11所示的自定義探針向導。程序員可以選擇從現有的探針文件(從后面可以看出,事實上也是一個vi文件)新建探針或者直接新建一個空的探針。選擇“Create a new probe”項。
圖 11 Create New Probe_1
單擊Next按鈕進入圖 12所示的界面。Filename表示探針文件的名字;Window title and shortcut menu name表示探針VI的標題欄名字同時也是使用探針時出現在快捷菜單中的名字;Directory to save the probe表示探針的存儲位置。
圖 12 Create New Probe_2
單擊Save按鈕,LabVIEW會自動生成圖 13所示的探針VI。不要刪除界面上的任何控件:
- String型控件表示探針位置當前的數值;
- Boolean型控件表示條件斷點,當該值被設置為TRUE時,程序將在當前的斷點處暫停。
圖 13 String Probe_Custom.vi
本例將修改String Probe_Custom.vi(下載)使得程序以不同的方式顯示String的值,并且設置為當值為“Hello”時暫停程序運行。如圖 14所示,加入適當的代碼,并調整Probe的前面板窗口大?。ㄟ@也是最終探針的顯示大?。?。
圖 14 修改后的String Probe_Custom.vi
新建一個VI,并加入一個String控件,此時在右鍵快捷菜單中選擇Custom Probe>> My First String Probe菜單項,如圖 15所示。
圖 15 調用String Probe_Custom探針
此時,LabVIEW會自動調用String Probe_Custom.vi,并以探針窗口的樣式顯示,如圖 16所示。在運行VI前修改Display Style中的值并運行VI,那么String顯示框將自動以相應的方式顯示數值。
圖 16 String Probe_Custom探針窗口
從上面的調用過程可以看出,LabVIEW中的探針實際上是對VI的調用。因此,在編輯探針VI時需要遵循以下的原則:
- 不要在探針VI中加入任何等待或長時間執(zhí)行的代碼,如循環(huán)、事件、隊列等,否則LabVIEW在運行時會自動掛起。
- 不要修改探針VI的默認屬性,如設置為Modal等。但是可以修改它的標題欄和大小。
LabVIEW提供了一種工具允許程序中的連接線保留上一次的運行值。單擊圖 17中的“Retain Wire Values”按鈕打開該工具,此時LabVIEW將保留當前VI上一次的運行值。當VI運行完成后,再次添加探針,則探針會自動立即顯示該位置上一次的運行值。當然,這也會影響程序運行的效率,因此當VI退出內存時,LabVIEW會自動關閉該工具。
圖 17 Retain Wire Values工具
1.6VI窗口管理(VI Windows)
在調試過程中,為了追蹤子VI的運行狀態(tài),經常需要打開很多的VI窗口。往往在關閉這些窗口時反復地按下“Ctrl + W”鍵,LabVIEW提供了同時關閉這些VI的方法。單擊Windows>>All Windows…(快捷點是Ctrl + Shift + W)菜單項,將彈出圖 18所示的VI窗口管理對話框。選擇需要關閉的窗口(可以使用Ctrl鍵或Shift鍵多選),單擊“Close Windows”按鈕就可以關閉選擇的窗口。圖 18 VI窗口管理
【小技巧】
在LabVIEW中,按下Ctrl + Tab鍵能夠在不同的LabVIEW窗口之間切換(Windows的Alt + Tab鍵是在所有的窗口之間切換)。
評論