【正文】
? 在實(shí)際的項(xiàng)目開發(fā)過程中,交叉編譯調(diào)試是項(xiàng)目開發(fā)前期階段的常用手段,當(dāng)各個(gè)應(yīng)用程序調(diào)試完后,將生成的目標(biāo)文件用 GNU make工具來連接生成可以獨(dú)立運(yùn)行的VxWorks程序映像。 ? WindView配置窗口和控制窗口 WindView視圖 旗型圖標(biāo)指示信號(hào)量的釋放和獲?。?give/task),水平線指示任務(wù)狀態(tài)(執(zhí)行、掛起、就緒等) 總結(jié) ? 上面對(duì) Tornado集成開發(fā)環(huán)境下工程的建立、編譯、調(diào)試等內(nèi)容按照開發(fā)的步驟進(jìn)行了描述。 ? Tornad中包含基本功能的 VxSim,通過點(diǎn)擊 VxSim按鈕,點(diǎn)擊“ OK”按鈕后啟動(dòng) VxSim及相應(yīng)的 Target Server。 VxSim與運(yùn)行在目標(biāo)機(jī)硬件上的 VxWoks類似,能進(jìn)行應(yīng)用下載和自己定制,可以啟動(dòng) Windsh進(jìn)行相應(yīng)的操作。 VxSim ? VxSim是移植到主機(jī)上的 VxWorks仿真程序。陰影部分表示當(dāng)前的使用值,信息條尾部數(shù)值表示總的棧大小。 堆棧檢查窗口 ? 單擊瀏覽器選擇器中的 Stack Check窗口查看各任務(wù)的棧使用情況。點(diǎn)擊任務(wù)條目會(huì)進(jìn)入對(duì)象信息窗口,顯示該任務(wù)對(duì)象的詳細(xì)信息,包括任務(wù)的屬性、棧和寄存器等。 任務(wù)瀏覽器 ? 單擊瀏覽器 Tasks窗口查看 VxWorks系統(tǒng)中的任務(wù)信息,包括系統(tǒng)任務(wù)和用戶任務(wù)。 Browser Window selector Data panel 顯示該目標(biāo)服務(wù)器的概要信息:有 Target Server名稱、 Tornado版本、 VxWorks版本、 WDB Agent版本、 CPU類型、 BSP名稱、內(nèi)存大小、用戶名、系統(tǒng)啟動(dòng)和當(dāng)前時(shí)間、與目標(biāo)機(jī)連接的主機(jī)工具。 ? Browser 可以方便的監(jiān)視目標(biāo)機(jī)狀態(tài)。x value = 1817632 = 0x1bbc20 = x 解決主機(jī)與目標(biāo)機(jī)之間的名字沖突 ? 當(dāng) Shell命令的名字與目標(biāo)列程有相同的名字時(shí),又需要調(diào)用此列程,使用單字符前綴 來標(biāo)識(shí)目標(biāo)機(jī)例程。 Shell命令 ? Shell提供了一些內(nèi)部命令,被構(gòu)建在主機(jī) Shell內(nèi)部,不需要在目標(biāo)上調(diào)用的函數(shù),而與目標(biāo)機(jī)上一些函數(shù)功能類似,通過使用主機(jī)命令直接在主機(jī)上執(zhí)行,以減少對(duì)目標(biāo)機(jī)性能的影響。 V x W o r k s目 標(biāo) 機(jī)開 發(fā) 主 機(jī)T o r n a d oS h e l l目 標(biāo) 服 務(wù) 器代 理通 訊 鏈 接符 號(hào) 表啟動(dòng)和停止 Tornado Shell ? 可選擇菜單“ ToolsShell…” 命令啟動(dòng)或按鈕“ launch shell” 啟動(dòng) : ? 在 Shell窗口執(zhí)行 exit、 quit或 Ctrl+D退出 Shell 。 ? Shell的操作包括 Tornado系統(tǒng)的三個(gè)組件: Shell接收命令并在本地主機(jī)上執(zhí)行,為任何操作向目標(biāo)服務(wù)器發(fā)出請(qǐng)求,包括符號(hào)表或者目標(biāo)機(jī)駐留程序或者數(shù)據(jù) 目標(biāo)服務(wù)器管理符號(hào)表,并處理與遠(yuǎn)程目標(biāo)的所有通訊,發(fā)出函數(shù)調(diào)用并在需要時(shí)發(fā)送回結(jié)果。在調(diào)試器中,可通過菜單“ DebugRun”命令來運(yùn)行調(diào)試代碼函數(shù),如果不需要提供參數(shù),其默認(rèn)值為零。 目標(biāo)模塊的調(diào)試 ? 工程生成的目標(biāo)文件和部分連接的 out文件,可以通過調(diào)試器下載到運(yùn)行VxWorks的目標(biāo)機(jī)中,完成局部代碼的開發(fā)調(diào)試工作。窗口顯示函數(shù)的地址、入口參數(shù)和所處的文件等。 ? Memory窗口顯示從 Start Address控制字段指定的地址開始的一個(gè)范圍的目標(biāo)機(jī)存儲(chǔ)器。 ? Variables窗口可以查看和修改當(dāng)前例程的局部變量,當(dāng)單步執(zhí)行不同的例程時(shí),新的例程的局部變量就取代了先前顯示的局部變量。在源代碼窗口可以直接選擇符號(hào)名加入 Watch窗口,也可以先激活“ Add to Watch”對(duì)話框,再手工輸入符號(hào)名加入到 Watch窗口。 ? Temporary breakpoints(臨時(shí)斷點(diǎn)) : 只有效一次,然后刪除( default )或禁止掉( disabled) 數(shù)據(jù)檢查、存儲(chǔ)器和堆棧 ? 當(dāng)代碼運(yùn)行到斷點(diǎn)處時(shí),可以單步跟蹤,通過使用附屬窗口,來檢查局部和全局的程序變量、參數(shù)、寄存器、目標(biāo)機(jī)存儲(chǔ)器和堆棧情況。而任務(wù)斷點(diǎn)除了和代碼相關(guān)外,也和運(yùn)行該代碼的任務(wù)上下文相關(guān)。 調(diào)試 啟動(dòng)和停止調(diào)試器 ? 啟動(dòng):從 Tornado Launch工具欄:按 按鈕,或從 Tools菜單:?jiǎn)螕?Debugger,啟動(dòng)調(diào)試器; ? 當(dāng)調(diào)試器運(yùn)行時(shí),可以通過編輯窗口、命令行窗口、 debug菜單及工具條進(jìn)行調(diào)試; D e b u g m e n uA t t i r b u t e p a n e lV a r i a b l e s w i n d o wD e b u g t o o l b a rE d i t o r w i n d o w停止:在調(diào)試工具條中,按 按鈕或單擊 Debug菜單中的 Stop Debugging命令,停止調(diào)試過程; 調(diào)試器工具條、按鈕命令 ? Debug工具條上面有調(diào)試命令的按鈕,以及顯示輔助調(diào)試器窗口的按鈕。當(dāng)綁定一個(gè)任務(wù)時(shí),其命令只影響此任務(wù)。默認(rèn)情況下, Tornado一次只可以調(diào)試一個(gè)任務(wù)。在此模式下,可以使用全局?jǐn)帱c(diǎn)來停止整個(gè)系統(tǒng),只要有任何任務(wù)遇到此斷點(diǎn)。對(duì)于圖標(biāo)的上下文菜單提供對(duì)于顯示 LogConsole窗口、顯示關(guān)于目標(biāo)機(jī)信息和關(guān)閉目標(biāo)機(jī)服務(wù)器的選項(xiàng)。 ? 在進(jìn)行上述的配置后點(diǎn)擊圖中的“ Launch”按鈕啟動(dòng) Target Server。缺省情況下為 1M,為了提高主機(jī)工具訪問該內(nèi)存的效率,可指定其大小。 目標(biāo)機(jī)內(nèi)存管理 ? 為了避免目標(biāo)機(jī)進(jìn)行過多的