官术网_书友最值得收藏!

2.6 VI的調(diào)試方法

在編寫(xiě)了LabVIEW的程序代碼后,一般需要對(duì)程序進(jìn)行調(diào)試。調(diào)試的目的是保證程序沒(méi)有語(yǔ)法錯(cuò)誤,并且能夠按照用戶的目的正確運(yùn)行,得到正確的結(jié)果。

LabVIEW提供了強(qiáng)大的容錯(cuò)機(jī)制和調(diào)試手段,例如設(shè)置斷點(diǎn)調(diào)試和設(shè)置探針,這些手段可以輔助用戶進(jìn)行程序的調(diào)試,發(fā)現(xiàn)并改正錯(cuò)誤。本節(jié)將主要介紹LabVIEW提供的用于調(diào)試程序的手段以及調(diào)試技巧。

2.6.1 找出語(yǔ)法錯(cuò)誤

LabVIEW程序必須在沒(méi)有基本語(yǔ)法錯(cuò)誤的情況下才能運(yùn)行,LabVIEW能夠自動(dòng)識(shí)別程序中存在的基本語(yǔ)法錯(cuò)誤。如果一個(gè)VI程序存在語(yǔ)法錯(cuò)誤,則程序框圖窗口工具欄上的“運(yùn)行”按鈕將會(huì)變成一個(gè)折斷的箭頭978-7-111-61476-0-Chapter02-62.jpg,表示程序存在錯(cuò)誤不能被執(zhí)行。單擊“運(yùn)行”按鈕978-7-111-61476-0-Chapter02-63.jpg,會(huì)彈出錯(cuò)誤列表,如圖2-46所示。

單擊錯(cuò)誤列表中的某一錯(cuò)誤,列表中的“詳細(xì)信息”欄中會(huì)顯示有關(guān)此錯(cuò)誤的詳細(xì)說(shuō)明,以幫助用戶更改錯(cuò)誤。單擊“顯示警告”復(fù)選框,可以顯示程序中的所有警告。

當(dāng)使用LabVIEW的錯(cuò)誤列表功能時(shí),有一個(gè)非常重要的技巧,就是當(dāng)雙擊錯(cuò)誤列表中的某一錯(cuò)誤時(shí),LabVIEW會(huì)自動(dòng)定位到發(fā)生該錯(cuò)誤的對(duì)象上,并高亮顯示該對(duì)象,如圖2-47所示,這樣,便于用戶查找錯(cuò)誤,并更正錯(cuò)誤。

978-7-111-61476-0-Chapter02-64.jpg

圖2-46 錯(cuò)誤列表

978-7-111-61476-0-Chapter02-65.jpg

圖2-47 高亮顯示程序中的錯(cuò)誤

2.6.2 設(shè)置斷點(diǎn)調(diào)試

為了查找程序中的邏輯錯(cuò)誤,用戶也許希望程序框圖一個(gè)節(jié)點(diǎn)一個(gè)節(jié)點(diǎn)地執(zhí)行。使用斷點(diǎn)工具可以在程序的某一地點(diǎn)暫時(shí)中止程序執(zhí)行,用單步方式查看數(shù)據(jù)。當(dāng)不清楚程序中哪里出現(xiàn)錯(cuò)誤時(shí),設(shè)置斷點(diǎn)是一種排除錯(cuò)誤的手段。在LabVIEW中,從工具選板選取斷點(diǎn)工具,如圖2-48所示。在想要設(shè)置斷點(diǎn)的位置單擊鼠標(biāo),便可以在那個(gè)位置設(shè)置一個(gè)斷點(diǎn)。另外一種設(shè)置斷點(diǎn)的方法是在需要設(shè)置斷點(diǎn)的位置單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“設(shè)置斷點(diǎn)”,即可在該位置設(shè)置一個(gè)斷點(diǎn)。如果想要清除設(shè)定的斷點(diǎn),只要在設(shè)置斷點(diǎn)的位置單擊鼠標(biāo)即可。

斷點(diǎn)的顯示對(duì)于節(jié)點(diǎn)或者圖框表示為紅框,對(duì)于連線表示為紅點(diǎn),圖2-34中程序設(shè)置斷點(diǎn)后的程序框圖如圖2-49所示。

978-7-111-61476-0-Chapter02-66.jpg

圖2-48 設(shè)置斷點(diǎn)

978-7-111-61476-0-Chapter02-67.jpg

圖2-49 設(shè)置斷點(diǎn)后的程序

運(yùn)行程序時(shí),會(huì)發(fā)現(xiàn)程序每當(dāng)運(yùn)行到斷點(diǎn)位置時(shí)會(huì)停下來(lái),并高亮顯示數(shù)據(jù)流到達(dá)的位置,用戶可以在這個(gè)時(shí)候查看程序的運(yùn)算是否正常,數(shù)據(jù)顯示是否正確。

程序停止在斷點(diǎn)位置時(shí)的程序框圖如圖2-50所示。從圖中可以看出,程序停止在斷點(diǎn)位置,并高亮顯示數(shù)據(jù)流到達(dá)的對(duì)象。按下單步執(zhí)行按鈕,閃爍的節(jié)點(diǎn)被執(zhí)行,下一個(gè)將要執(zhí)行的節(jié)點(diǎn)變?yōu)殚W爍,指示它將被執(zhí)行。你也可以單擊暫停按鈕,這樣程序?qū)⑦B續(xù)執(zhí)行直到下一個(gè)斷點(diǎn)。當(dāng)程序檢查無(wú)誤后,用戶可以在斷點(diǎn)上單擊鼠標(biāo)以清除斷點(diǎn)。

978-7-111-61476-0-Chapter02-68.jpg

圖2-50 運(yùn)行帶有斷點(diǎn)的程序

2.6.3 設(shè)置探針

在有些情況下,僅僅依靠設(shè)置斷點(diǎn)還不能滿足調(diào)試程序的需要,探針便是一種很好的輔助手段,可以在任何時(shí)刻查看任何一條連線上的數(shù)據(jù),探針猶如一顆神奇的“針”,能夠隨時(shí)偵測(cè)到數(shù)據(jù)流中的數(shù)據(jù)。

在LabVIEW中,設(shè)置探針的方法是用工具選板中的探針工具,如圖2-51所示,單擊程序框圖中程序的連線,這樣可以在該連線上設(shè)置探針以偵測(cè)這條連線上的數(shù)據(jù),同時(shí)在程序上將浮動(dòng)顯示探針監(jiān)視窗口。要想取消探針,只需要關(guān)閉浮動(dòng)的探針監(jiān)視窗口即可。

設(shè)置好探針的程序框圖如圖2-52所示。運(yùn)行程序,在探針監(jiān)視窗口中將顯示出設(shè)置探針處的數(shù)據(jù)。

978-7-111-61476-0-Chapter02-69.jpg

圖2-51 設(shè)置探針

978-7-111-61476-0-Chapter02-70.jpg

圖2-52 設(shè)置好探針的程序程序框圖

利用探針可以檢測(cè)數(shù)據(jù)的功能,可以了解程序運(yùn)行過(guò)程中任何位置上的數(shù)據(jù),即可知道數(shù)據(jù)流在空間的分布。利用上面介紹的斷點(diǎn),可以將程序中止在任意位置,即可知道數(shù)據(jù)在任何時(shí)間的分布。那么綜合使用探針和斷點(diǎn),就可以知道程序在任何空間和時(shí)間的數(shù)據(jù)分布了。這一點(diǎn)對(duì)LabVIEW程序的調(diào)試非常重要。

2.6.4 高亮顯示程序的運(yùn)行

有時(shí)希望在程序運(yùn)行過(guò)程中,能夠?qū)崟r(shí)顯示程序的運(yùn)行流程以及當(dāng)數(shù)據(jù)流流過(guò)數(shù)據(jù)節(jié)點(diǎn)時(shí)的數(shù)值,LabVIEW為用戶提供了這一功能,這就是以“高亮顯示”方式運(yùn)行程序。

單擊LabVIEW工具欄上的高亮顯示程序“運(yùn)行”按鈕978-7-111-61476-0-Chapter02-71.jpg,程序?qū)?huì)以高亮顯示方式運(yùn)行。這時(shí)該按鈕變?yōu)?img alt="978-7-111-61476-0-Chapter02-72.jpg" src="https://epubservercos.yuewen.com/197906/22450719701473906/epubprivate/OEBPS/Images/978-7-111-61476-0-Chapter02-72.jpg?sign=1751711659-1J7J6Jlh29812PEgC7CVKCO9y9fknCTD-0-135374cec97f50ed62ae37ed49b8b397" style="height: 18px;">,如同一盞被點(diǎn)亮的燈泡。

下面以高亮的方式執(zhí)行實(shí)例1的程序。在程序的運(yùn)行過(guò)程中,程序框圖如圖2-53所示。在這種方式下,VI程序以較慢的速度運(yùn)行,沒(méi)有被執(zhí)行的代碼灰色顯示,執(zhí)行后的代碼高亮顯示,并顯示數(shù)據(jù)流線上的數(shù)據(jù)值。這樣,就可以根據(jù)數(shù)據(jù)的流動(dòng)狀態(tài)跟蹤程序的執(zhí)行,可以很清楚地看到程序中數(shù)據(jù)流的流向,并且可以實(shí)時(shí)地了解每個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)值。

978-7-111-61476-0-Chapter02-73.jpg

圖2-53 以“高亮”方式運(yùn)行程序

在多數(shù)情況下,需要結(jié)合多種方式調(diào)試LabVIEW程序,例如可以在設(shè)置探針的情況下,高亮顯示程序的運(yùn)行,并且單步執(zhí)行程序。這樣程序的執(zhí)行細(xì)節(jié)將會(huì)一覽無(wú)余。

2.6.5 單步執(zhí)行和循環(huán)運(yùn)行

單步執(zhí)行和循環(huán)運(yùn)行是LabVIEW支持的兩種程序運(yùn)行方式,和正常運(yùn)行方式不同的是,這兩種運(yùn)行方式主要用于程序的調(diào)試和糾錯(cuò)。它們是除了設(shè)置斷點(diǎn)和探針兩種方法外,另外一種行之有效的程序調(diào)試和糾錯(cuò)機(jī)制。

在單步執(zhí)行方式下,用戶可以看到程序執(zhí)行的每一個(gè)細(xì)節(jié)。單步執(zhí)行的控制由工具欄上的三個(gè)按鈕978-7-111-61476-0-Chapter02-74.jpg(開(kāi)始單步入執(zhí)行)、978-7-111-61476-0-Chapter02-75.jpg(開(kāi)始單步跳執(zhí)行)和978-7-111-61476-0-Chapter02-76.jpg(單步步出)完成。這三個(gè)按鈕表示三種不同類型的單步執(zhí)行方式。978-7-111-61476-0-Chapter02-77.jpg(開(kāi)始單步入執(zhí)行)表示單步進(jìn)入程序流程,并在下一個(gè)數(shù)據(jù)節(jié)點(diǎn)前停下來(lái);978-7-111-61476-0-Chapter02-78.jpg(開(kāi)始單步跳執(zhí)行)表示單步進(jìn)入程序流程,并在下一個(gè)數(shù)據(jù)節(jié)點(diǎn)執(zhí)行后停下來(lái);978-7-111-61476-0-Chapter02-79.jpg(單步步出))表示停止單步執(zhí)行方式,即在執(zhí)行完當(dāng)前節(jié)點(diǎn)的內(nèi)容后立即暫停。

下面仍舊結(jié)合實(shí)例1介紹單步運(yùn)行調(diào)試程序的方法。

單擊978-7-111-61476-0-Chapter02-80.jpg(開(kāi)始單步入執(zhí)行)按鈕,程序開(kāi)始以單步方式執(zhí)行,程序每執(zhí)行一步,便停下來(lái)并且高亮顯示當(dāng)前程序執(zhí)行到的位置,如圖2-54所示。

978-7-111-61476-0-Chapter02-81.jpg

圖2-54 單步執(zhí)行程序

在LabVIEW中支持循環(huán)運(yùn)行方式,LabVIEW中的循環(huán)運(yùn)行按鈕為978-7-111-61476-0-Chapter02-82.jpg。所謂循環(huán)運(yùn)行方式,是指當(dāng)程序中的數(shù)據(jù)流流經(jīng)最后一個(gè)對(duì)象時(shí),程序會(huì)自動(dòng)重新運(yùn)行,直到用戶手動(dòng)按下“停止”按鈕978-7-111-61476-0-Chapter02-83.jpg為止。

主站蜘蛛池模板: 尤溪县| 抚顺市| 广元市| 微山县| 明光市| 白城市| 五大连池市| 哈尔滨市| 峨眉山市| 临海市| 灌南县| 达尔| 交城县| 榆社县| 林口县| 富源县| 体育| 许昌县| 满洲里市| 五寨县| 法库县| 佳木斯市| 阿拉善盟| 宝应县| 武平县| 栾川县| 六安市| 正蓝旗| 栖霞市| 喀喇沁旗| 驻马店市| 依兰县| 台州市| 日喀则市| 吴桥县| 阳泉市| 昆山市| 四平市| 黄陵县| 尼勒克县| 平江县|