記憶體除錯,3天值嗎 (預設程式偵錯程式的修改)

2021-05-10 01:57:12 字數 945 閱讀 6231

最近乙個同事一直被乙個debulg困擾著,都找了3天了,還是找不出個所以來,問題主要是在編譯器環境下允許除錯程式不會出現,而直接執行程式就莫名奇妙的跳出debulg錯誤(記憶體塊的問題)

最後專案經理親自出馬,解決過程:

1、找了個不知道什麼高深的測試軟體(明天補上),監視程序中線程的執行狀態(測試軟體還能監視軟體的通訊情況,厲害),還是沒有找到在哪個執行緒中,這下麻煩了

2、出錯程式直接除錯程式錯處,由於程式預設的除錯環境為cb,在cb下不能檢視到,到底是在哪個函式裡面出的錯誤,解除安裝(麻煩),我直接google,找了下修改預設程式偵錯程式的方法,當然是修改登錄檔

具體路徑:

hkey_local_machine/ software/microsoft/windows nt/currentversion/aedebug

這裡面有2個主要的值:

auto

= 0 的時候,系統會彈出乙個對話方塊,讓你在幾個偵錯程式中選擇(如果你的系統安裝了多個偵錯程式的話)

= 1 的時候,系統會自動呼叫預設偵錯程式

debugger

預設偵錯程式的路徑。

"c:/windows/system32/vsjitdebugger.exe" -p %ld -e %ld      (vc 2005)

最後發現,原來是這樣一回事:

char * pchar = new char[1];

memcpy(***, pchar, 1);

cstring strvalue = pchar;

由於new出來的空間有時會不夠,賦值cstring的時候會出錯,最好指定賦給cstring的值,

也就是:

cstring strvalue(pchar, 1);

很簡單的**吧,就是這樣的一段**耗費了3天時間,對於公司對於個人完全是耗費時間,道理怎麼才能寫出高效的**呢,只能在磨練中慢慢學會,寫出的程式穩定了,你的實力也慢慢增強了

記憶體偵錯程式

memory debuggers 有幾種工具可用於查詢記憶體洩漏或用於報告程式的各個記憶體分配。這些工具可幫助分析記憶體使用模式,檢測不平衡的分配和釋放,報告緩衝區超載和欠載等。內容 mtrace memwatch mpatrol dmalloc dbgmem valgrind electric f...

修改Windows預設偵錯程式

程式崩潰時,系統會彈窗讓你選擇是否進行除錯,可以設定系統預設偵錯程式.登錄檔位置 hkey local machine software microsoft windows nt currentversion aedebug auto 0 系統會彈出乙個對話方塊,讓你在幾個偵錯程式中選擇 1 系統會...

程式偵錯程式原理

偵錯程式原理 偵錯程式是乙個程式,在開發工具中也是呼叫乙個程式,在執行時就是乙個程序,這個程序與普通程序沒有區別,只是這個程序呼叫了核心的一些特殊函式 系統呼叫 來操縱核心資料,這些資料就是被除錯程序的記憶體資料。而對作業系統除錯的偵錯程式則不同,因為沒有作業系統的支援,偵錯程式本身就不再需要呼叫作...