2008-10-03 67 views
0

我正在開發一個POS應用程序,該應用程序在使用.NET 2.0,WCF和SyncFusion組件的GUI中的約200個位置中使用。WinDbg將字符輸出到控制檯不間斷

兩天前我們在一個新的位置安裝了應用程序,並且它一直在遭受應用程序的突然終止。

應用程序有一個事件和異常的運行日誌,所以如果發生了什麼事情,日誌中總是有一些東西。在這種情況下,日誌很簡單。我們在其他地方也遇到類似的情況,但它們非常罕見,並且發生的次數不止一次或兩次,所以我們無法捕捉到調試轉儲。

在那個位置的計算機有一個稍微不同的硬件設置,包括LPT輸出上的分離器,用於打印到POS打印機,並在視頻監視器上顯示輸出。

雖然在這個位置,但它每隔1.5小時就會發生一次。我試圖打開WinDbg並附加到進程中,但這裏有一件奇怪的事情,在有調試輸出的區域中,我看到了我的應用程序生成的跟蹤消息,但也有不間斷的字符流,特別是「 b0「,重複自己。

我的問題是我不明白「b0」是從哪裏來的,它是什麼意思。我懷疑它可能是分離器,但直到星期日我才能測試它。

希望有人會有一個想法如何去解決這個問題。

回答

1

聽起來好像您在應用程序中遇到了非託管異常,可能會繞過您嘗試執行的任何日誌記錄。

在這樣的情況下,我設置了cdb以在崩潰時生成完整的MiniDump,然後使用SOS擴展運行WinDbg以分析轉儲。

從MSDN博客(http://blogs.msdn.com/pfedev/):

運行從Windows調試工具目錄下這個命令:

C:\debuggers> cdb -iaec "-c \".dump /u /ma c:\dumps\av.dmp;q\"" 

這將CDB調試配置爲通過的AeDebug註冊表鍵崩潰的默認處理程序。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug 

而看到這兩個值:您可以通過瀏覽到註冊表項驗證設置

值名稱:自動值數據:1個

值名稱:調試值數據:「C: \ debuggers \ cdb.exe「-p%ld -e%ld -g -c」.dump/ma /uc:\av.dmp;q「