資源描述:
《tornado調(diào)試工具介紹》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、Tornado調(diào)試工具介紹網(wǎng)絡(luò)上海軟件開(kāi)發(fā)二部crossWind(tornadodebugger)重要的設(shè)置步驟:1、配置tools->targetserver->configa、在targetname/ipaddress中輸入目標(biāo)板子的ip地址。b、在backend處選上wdprpc,如果網(wǎng)絡(luò)不好,可以在timeout中輸入2sc、在corefileandsymbols的文件中選上需要調(diào)試的vxWorks或vxWorks.std、memorycacheSize設(shè)置為10000。e、這樣就可以啟動(dòng)這個(gè)targetserver了2、Debug->Sourcesearchpath中加上你要調(diào)試
2、的原代碼的路徑。典型故障:1、PING目標(biāo)機(jī)也通,想調(diào)試程序,但targetserver啟不來(lái),現(xiàn)象如下:Connectingtotargetagent...Error:rpccorebackendclientUnabletoreceivefailed.解決:檢查targetserver的配置,其中Corefile應(yīng)選為下載的vxworskimage。假設(shè)targetserver的配置是正確的,那么就檢查T(mén)ornado中對(duì)vxworks的配置,選擇wdbconnection為end方式。2、啟動(dòng)targetserver后,出現(xiàn)Warning:Targetchecksum:0xa7fc(co
3、mputedfrom0x108340to0x2170d0).Hostchecksum:0xa8fd(computedfrom0x1830380to0x193f110).Warning:Corefilechecksumsdonotmatch.解決:下載的VxWorks核和targetserver路徑下的文件不是同一個(gè)文件,有可能是因?yàn)橹匦戮幾g了VxWorks(即使不修改任何內(nèi)容,兩次編譯的結(jié)果仍然會(huì)不同)。3、啟動(dòng)targetserver后,出現(xiàn)Warning:Targetservercacheforagentmemoryisfull.Usethe'-m'optiontoincreaseth
4、etargetservercache.解決:targetServer的Memorycachesize默認(rèn)為1M,適當(dāng)加大。常用功能:breakPoint:設(shè)置斷點(diǎn),當(dāng)任務(wù)執(zhí)行到本斷點(diǎn)后會(huì)stop,前提是我們?cè)O(shè)置了autoattachtotask,在沒(méi)有設(shè)置此選項(xiàng)的情況下,必須手工attach到某一任務(wù)。有全局?jǐn)帱c(diǎn)和任務(wù)斷點(diǎn)Step:單步功能,跟其他調(diào)試環(huán)境類(lèi)似。Watch:設(shè)置watch變量。Variable:變量查看,主要是當(dāng)前被調(diào)試的函數(shù)的局部變量和全局變量。注意:WatchVariable和顯示的變量值可能會(huì)不對(duì),最好去和內(nèi)存中去確認(rèn),或者看寄存器或者打印。(arm)Register
5、s:查看寄存器當(dāng)前值。Memory:查看內(nèi)存值。Backtrace:?;厮荩ㄟ^(guò)?;厮?,可以看到函數(shù)的調(diào)用關(guān)系,針對(duì)每一個(gè)棧幀,可以查看調(diào)用時(shí)各個(gè)函數(shù)的執(zhí)行環(huán)境,包括參數(shù)、寄存器等。Attach:attach到某一運(yùn)行任務(wù),attach之后,整個(gè)任務(wù)便在調(diào)試器的控制之下。Run:創(chuàng)建一個(gè)任務(wù),并執(zhí)行,調(diào)試器會(huì)自動(dòng)attach到這個(gè)任務(wù)。Diassemble:反匯編能力,可以和c語(yǔ)言同時(shí)對(duì)應(yīng)顯示常見(jiàn)問(wèn)題:1、如果在taskSpawn的時(shí)候選項(xiàng)中設(shè)置了VX_UNBREAKABLE,那么就不能設(shè)置斷點(diǎn)調(diào)試。使用taskOptionsSet(inttid,intmask,intnewOptions
6、)修改任務(wù)選項(xiàng)。例如在TargetShell上去掉tShell的不允許設(shè)置斷點(diǎn)的選項(xiàng):taskOptionsSet(0,2,0);這樣就不需要重新制作版本了。2、如果打開(kāi)了優(yōu)化開(kāi)關(guān),O2那么無(wú)法單步調(diào)試,代碼和匯編對(duì)不上。3、編譯時(shí)沒(méi)有使用-g編譯開(kāi)關(guān)。會(huì)無(wú)法設(shè)置斷點(diǎn)。4、斷點(diǎn)位置不準(zhǔn)確,和代碼對(duì)不上,可能是由于鏈接的不是該原代碼文件,或者代碼和targetserver的版本有差異browser1、察看stack信息可以察看當(dāng)前stack使用量和最大stack的使用量,當(dāng)任務(wù)堆棧的使用率較高時(shí)需要特別注意(相應(yīng)加大任務(wù)堆?;騼?yōu)化代碼減少堆棧使用量)。注意:如果在taskSpawn的時(shí)候選項(xiàng)
7、中設(shè)置了VX_NO_STACK_FILL,那么就無(wú)法察看相應(yīng)任務(wù)的stack使用量了。在shell中用checkStack也可以察看各任務(wù)stack的使用情況。2、察看cpu占有率Spy當(dāng)感覺(jué)系統(tǒng)運(yùn)行很慢時(shí),可以用spy察看哪些任務(wù)占cpu太多時(shí)間了??梢允褂肧PY分析各任務(wù)的CPU占有率情況,特別關(guān)注CPU占有率較高的任務(wù)或中斷。注意:有的tornado顯示用不了spy,那么可能要把spyLib.o這個(gè)文件copy到l