2012-12-13 17 views
0

我在Green Hills INTEGRITY 5.0.10下運行Marvell Monahans PXA320。我正在使用MULTI 4.2.3進行開發。我正在使用RTSERV連接進行調試,我被要求接管菜單驅動的程序。運行Green Hills調試器時的幻像輸入

我注意到,如果我暫停程序(修改斷點)然後恢復它,任務會進入無限循環,在調試器I/O選項卡中顯示菜單。在每個打印的菜單實例之後,它說我做出了非法選擇。所以,一些輸入顯然被輸入到任務中,就好像我輸入了它(並且這個輸入明顯對應於無效的菜單選擇)。我沒有在顯示屏上看到這個幻像輸入是什麼。

有什麼我可以做,以防止停止/恢復搞砸了I/O?

謝謝, 戴夫

+0

什麼驅動你的操作系統計時器打勾? – phonetagger

+0

菜單是否正常通過串口?你能配置調試器繼續並讓它通過串口嗎?如果是這樣,那麼會發生什麼?同樣的行爲? – phonetagger

回答

0

我的第一個猜測是,GETC()(或您的等價物)將返回-1。如果輸入緩衝區由於暫停應用程序而溢出,則可能發生這種情況。當應用程序暫停時,I/O不斷流動...

在使用INTEGRITY進行調試時暫停程序通常不是一個好主意。你最好把調試器附加到一個單獨的線程(空閒或不常用的東西),在該線程中設置一個「任務」斷點,然後恢復線程。 (不要關閉窗口!這樣做會刪除斷點。)您會在線程上看到一個「DebugBrk」狀態,然後您可以雙擊並附加到該特定線程。

下面的備用過程應該(希望!)防止I/O錯誤。