新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > LabVIEW程序的調(diào)試方式

LabVIEW程序的調(diào)試方式

作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
調(diào)試工具是任何一種程序開發(fā)環(huán)境都必須提供的功能,它們可以顯著地提高程序員的開發(fā)效率。LabVIEW作為一種圖形化程序設(shè)計語言的IDE工具(同時也是一門獨特的語言),自然需要考慮為工程師提供適合于圖形化語言調(diào)試的工具。
事實上,LabVIEW并沒有規(guī)定哪些工具被劃分為調(diào)試工具,哪些工具被劃分為其它的工具。這種界限和定義是比較模糊的,在實際使用中,我們可以把輔助程序員更準(zhǔn)確、快捷地定位代碼執(zhí)行和Bug的工具統(tǒng)稱為“調(diào)試工具”。
LabVIEW主要的調(diào)試工具位于工具欄,如圖 1所示。從左至右依次是:
  1. Run:運(yùn)行,單擊它會直接運(yùn)行當(dāng)前的VI,快捷鍵Ctrl + R。
  2. Run Continuously:連續(xù)運(yùn)行。
  3. Abort Execution:中止運(yùn)行,單擊它會停止當(dāng)前運(yùn)行的VI。
  4. Pause:暫停運(yùn)行。
  5. Highlight Execution:高亮執(zhí)行工具,單擊它程序會變慢,反映整個數(shù)據(jù)流運(yùn)行的過程。
  6. Retain Wire Values:單擊它會保留當(dāng)前連接線上的值(這一點在后面描述)。
  7. Start Single Stepping:單步執(zhí)行,此時程序往前運(yùn)行一個節(jié)點。
  8. Step Over:跳過當(dāng)前的節(jié)點。
  9. Step Out:跳出單步執(zhí)行。
  10. Step Into:進(jìn)入到某一個子VI中執(zhí)行。
其中(1)~(4)是常用的工具,用來控制VI的運(yùn)行、暫停和停止;而(7)~(10)是其它的程序設(shè)計語言的IDE環(huán)境均具備的,用法也沒有其它的區(qū)別。因此,本文將著重介紹LabVIEW中特有的程序調(diào)試工具或者方法。


圖 1 LabVIEW的工具欄

1.1錯誤列表(Error List)

LabVIEW作為一種圖形化的編譯型語言,其編譯的過程是在后臺自動完成的(無需程序員手動編譯),編譯后的目標(biāo)代碼也存儲在vi文件中。因此LabVIEW會“實時地”判斷代碼是否能夠正常運(yùn)行。當(dāng)無法正常運(yùn)行時,將彈出Error List對話框,列出當(dāng)前VI繼承中所有的錯誤,如圖 2所示。
對話框分為3個部分,分別表示發(fā)生錯誤的VIs、發(fā)生錯誤的節(jié)點和錯誤簡單表述、錯誤的詳細(xì)描述。雙擊某一個VI可以直接打開該VI,雙擊某個錯誤節(jié)點可以直接定位到該節(jié)點節(jié)點。


圖 2 Error List對話框
通常使用該方式可以快速地定位發(fā)生錯誤的VI或節(jié)點,并根據(jù)錯誤描述進(jìn)行修改。有時候會出現(xiàn)LabVIEW的“運(yùn)行”箭頭是斷開,而Error List對話框中卻沒有顯示任何錯誤的情況。這是由于LabVIEW在內(nèi)存中的已編譯代碼無法執(zhí)行,只需要把當(dāng)前的VI重新強(qiáng)制編譯即可,方法是在單擊“運(yùn)行”箭頭的同時按住Ctrl鍵(LabVIEW 8.6.1之前的版本可能是Ctrl + Shift鍵)。

1.2VI繼承和調(diào)用(VI Hierarchy)

LabVIEW允許并且鼓勵子VI的調(diào)用,因此VI之間存在著調(diào)用與被調(diào)用關(guān)系,LabVIEW將這種關(guān)系以圖形的方式表示出來,稱之為“VI繼承”(動態(tài)調(diào)用的VI將不會顯示其調(diào)用與被調(diào)用的關(guān)系)。選擇View>>VI Hierarchy菜單項,彈出VI之間的關(guān)系圖,如圖 3所示。


圖 3 VI Hierarchy
從該圖中可以迅速地看出當(dāng)前VI的子VI以及被調(diào)用的VI之間的關(guān)系,雙擊某個VI的圖標(biāo)可以快速地打開該VI前面板。
【小技巧】
雙擊某個VI圖標(biāo)的同時按住Ctrl鍵能夠直接打開VI的后面板。
當(dāng)LabVIEW暫停在某個VI中時,會在背面板工具欄中顯示當(dāng)前VI被調(diào)用的VIs列表,如圖 4所示。從圖中可以看出,當(dāng)前的VI正被1.vi調(diào)用,單擊該選項,可以看出整個被調(diào)用關(guān)系的列表VIs。當(dāng)從列表中選擇某一個VI時,LabVIEW會自動定位到該VI。


圖 4 VI Caller Chain

1.3斷點工具(Breakpoint)

LabVIEW運(yùn)行對背面板中的任何一個節(jié)點和連線都可以設(shè)置斷點,程序運(yùn)行到斷點位置時會暫停運(yùn)行。
在需要放置斷點的位置上右擊,選擇彈出菜單中的Breakpoint菜單項,使用Set Breakpoint指令可以在當(dāng)前位置放置一個斷點,如圖 5所示。


圖 5 Breakpoint快捷菜單
當(dāng)在已經(jīng)存在斷點的位置上右擊鼠標(biāo)時,會彈出圖 6所示的快捷菜單。使用Clear Breakpoint菜單項可以清除當(dāng)前的斷點,而Disable Breakpoint可以禁止當(dāng)前的斷點,此時斷點將不再暫停程序的執(zhí)行。


圖 6 Breakpoint快捷菜單
在大型的程序調(diào)試中,斷點往往是使用的最為頻繁的工具,它使得程序員能夠迅速地專注于所關(guān)心的VI,而對于其它的VI執(zhí)行過程則正常運(yùn)行。通常,程序員為了找到某個Bug出現(xiàn)的原因,會在背面板中設(shè)置若干個斷點,而一旦清除掉Bug后又需要將這些斷點一一地清除,這難免會重復(fù)和繁瑣。LabVIEW 8.6提供了一個斷點管理的工具,可以選擇圖 5或圖 6中的Breakpoint Manager菜單項,啟動如所示的斷點管理對話框(或者直接使用View>>Breakpoint Manager菜單項)。該對話框中列出了當(dāng)前內(nèi)存中所有VI中包含的斷點,程序員可以選擇任意地斷點批量地將它們清除或者禁設(shè)置為禁止?fàn)顟B(tài)。

上一頁 1 2 下一頁

關(guān)鍵詞: LabVIEW程序調(diào)試方

評論


技術(shù)專區(qū)

關(guān)閉