TAU G2程序本身的仿真功能很強(qiáng),如果程序在目標(biāo)機(jī)上運(yùn)行時(shí)出現(xiàn)邏輯錯(cuò)誤,你總是可以在TAU G2的仿真環(huán)境下模擬出這個(gè)錯(cuò)誤并找到出錯(cuò)的原因,一般不需要借助操作系統(tǒng)的C代碼調(diào)試工具。但是如果是在TAU G2中調(diào)用了C語言的函數(shù),或者在環(huán)境函數(shù)中出現(xiàn)錯(cuò)誤,問題就復(fù)雜了,因?yàn)門AU G2的仿真環(huán)境無法跟蹤這些C語言的代碼,你只能借助操作系統(tǒng)自身的調(diào)試功能了。
TAU G2生成的程序至少是2個(gè)線程:一個(gè)是主線程,就是main函數(shù)所在的線程,象環(huán)境函數(shù)中的xInitEnv和xInEnv都是在主線程中的,主線程設(shè)置斷點(diǎn)很容易,只要在啟動(dòng)調(diào)試器后,使用Debug菜單中的Toggle Breakpoint(F9)就可以了,因?yàn)檎{(diào)試器默認(rèn)就是把主線程當(dāng)作當(dāng)前線程的;另一個(gè)線程是UML代碼所在的線程,通常你不需要在生成的UML代碼中設(shè)置斷點(diǎn),但是xOutEnv在這個(gè)線程中,而且如果在UML代碼中調(diào)用了C語言的函數(shù),那么這些C語言的函數(shù)也在這個(gè)線程中,而在這個(gè)線程中如果還是用F9直接設(shè)置斷點(diǎn)就往往不會(huì)成功了,程序往往不會(huì)停下來而是繼續(xù)執(zhí)行。
要想在xOutEnv或者自己編寫的C語言函數(shù)中設(shè)置斷點(diǎn)進(jìn)行調(diào)試,可以使用Debug菜單中的Toggle Global Breakpoint(Shift F9)設(shè)置全局?jǐn)帱c(diǎn)。設(shè)置全局?jǐn)帱c(diǎn)后,當(dāng)UML代碼所在的線程執(zhí)行到斷點(diǎn)處,這個(gè)線程就會(huì)停下來,此時(shí)可以使用Debug菜單中的Attach功能,將當(dāng)前線程由主線程變?yōu)閁ML線程,這樣就可以單步跟蹤調(diào)試了。UML線程在Attach對話框中通常是最后一個(gè)線程,默認(rèn)情況下其名字應(yīng)該為t1,但是有的時(shí)候線程名會(huì)顯示為亂碼。
posted on 2008-10-13 23:18
zealsoft 閱讀(1330)
評論(0) 編輯 收藏 引用 所屬分類:
UML 、
嵌入式開發(fā)