drwtsn32 除錯windows程式

2021-08-22 03:47:17 字數 1569 閱讀 6075

一直忙著除錯**,寫伺服器的**,有時候真叫人鬱悶,鬱悶的是要高效能的保持程式繼續執行n多天還沒有事情,本來這也是程式設計師該做的事情,但是有時候一些長期積累下來的問題會造成程式指明性的打擊~~~

在寫這個程式的時候,本機除錯**的時候都沒有遇到任何記憶體洩漏的問題,除錯的時候都很清晰,但是到客戶那裡執行一天到兩天就沒名的掛掉,真讓人鬱悶

而且沒有任何報錯~~無奈,

開啟了drwtsn32來檢測程式的執行報錯情況

drwtsn32是windows除錯的利器,除錯不常見錯誤的程式的時候,累積錯誤的時候,都可以用它.

在命令列視窗,輸入drwtsn32

然後就可以看到drwtsn32的執行介面

然後設定"轉存到符號表"

"轉儲全部執行緒上下文"會在出錯的時候把程式執行的上下文都記錄下來,如果只想知道出錯那個地方的記錄,就不要選這個,看起來方便很多

然後確定儲存這些資訊

相應的windows程式生成的時候,也得做一些改動,要生成map檔案,這樣好找到出問題的**地方

vc設定:

1、配置屬性-〉c/c++-〉常規-〉除錯資訊格式, 選擇「程式資料庫(/zi)」

2、配置屬性-〉c/c++-〉優化,選擇「禁用(/od)」

3、配置屬性-〉聯結器-〉除錯-〉生成除錯資訊,選擇 「是(/debug)」

4、配置屬性-〉聯結器-〉除錯-〉生成影射檔案,選擇 「是(/map)」

5、配置屬性-〉聯結器-〉除錯-〉影射檔名,選擇「$(outdir)/$(projectname).map」

6、配置屬性-〉聯結器-〉除錯-〉影射匯出,選擇「是(/mapinfo:exports)」

7、配置屬性-〉聯結器-〉除錯-〉影射行,選擇「是(/mapinfo:lines)」

8、配置屬性-〉聯結器-〉高階->固定基址,選擇「生成重定位節(/fixed:no)」

然後命令列執行drwtsn32

等待程式出錯~~

程式出錯以後會把log和乙個dmp檔案儲存到故障轉存 和日誌檔案路徑 那個目錄下面,這個目錄可以自己設定.

在log資訊裡面有這樣的資訊

*----> 系統資訊 <----*

計算機名: f6b2548c83754cf

使用者名稱: administrator

處理器數量: 1

處理器型別: x86 family 6 model 8 stepping 6

0041e6bb 8b45e0 mov eax,[ebp+0xe0] ss:00d9907e=????????

錯誤 ->0041e6be 8b500c mov edx,[eax+0xc] ds:00c69ee6=????????

0041e6c1 52 push edx

0041e6c2 ff1518af4300 call dword ptr [0043af18] ds:0043af18=7c177c00

很多資訊

然後對應的去找你vc 生成的map檔案的地方~~

找到**出現那樣情況的地方~~

~~~然後讓你的程式vc除錯,反彙編,找到對應的地方~~

ps:這只是一種最簡單的方法:)

更多的方法,看《windows程式除錯》

TRACE32除錯技巧

1.除錯步驟 l 連線好 trace32 icd 和目標板,注意不要帶電插拔 jtag 容易損壞 trace32 或目標板,然後依次開啟 trace32 icd 和目標板的電源。l 開啟除錯軟體 trace32 l 設定 cpu 型別,狀態等,可以通過命令或選單,命令如下 sys.reset sys...

stm32硬體除錯

stm32的基本系統主要涉及下面幾個部分 一 電源 1 無論是否使用模擬部分和ad部分,mcu外圍出去vcc和gnd,vdda vssa vref 如果 封裝有該引腳 都必需要連線,不可懸空 2 對於每組對應的vdd和gnd都應至少放置乙個104的陶瓷電容用於濾波,並接該 電容應放置盡量靠近mcu ...

EDK32 NT32pkg 編譯和除錯

edk32 nt32pkg提供了在windows下 uefi bios的能力,對於初學者學習framework有很大的幫助。另外順便一提的是,linux下也有類似的unixpkg,提供用gcc編譯 gdb除錯的 包。進入今天的實驗 開啟cmd,進入c edk2執行edksetup.bat 然後執行b...