新聞中心

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

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

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


圖 1 LabVIEW的工具欄

1.1錯(cuò)誤列表(Error List)

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


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

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

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


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


圖 4 VI Caller Chain

1.3斷點(diǎn)工具(Breakpoint)

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


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


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

上一頁 1 2 下一頁

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

評(píng)論


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

關(guān)閉