windows下,除錯mysql乙個記憶體被破壞的bug,.
構造最小重現用例,執行,出現問題,用偵錯程式檢視,檢視**,不得其解.
於是使用gflags工具(非google的那個開源的處理命令列引數的庫),用法可參考:
1 官方文件:
2 網友部落格:
如以上資料所述,執行:
1 命令列執行: "gflags /p /enable mysqld.exe /full /unaligned",
2 然後重新啟動mysql的伺服器,因mysqld.exe被監測,彈出乙個視窗提示可能存在記憶體問題, 屬於啟動階段,非bug所示處,忽略,讓程式繼續執行. 注意:這
個過程很快,幾乎沒有時間損耗.
3 執行測試用例,問題重現,但gflags工具沒有給出有用的提示.沒有定位到問題所在.
4 放棄使用gflags,禁止其監測mysqld.執行: "gflags /p /disable mysqld.exe"
5 重新啟動mysql的伺服器mysqld.exe.mysqld很長時間沒有反應,似乎停滯了
6 開啟windows的"任務管理器->程序",看到mysqld程序存在,但"記憶體"一列的數字在不斷增長,說明作業系統在為此程序不斷分配記憶體. 這表明mysqld沒有死掉.但是速度緩慢實在無法忍受.
7 執行"regedit"開啟登錄檔,去除"hkey_local_machine/software/microsoft/windowsnt/image file execution options"項.
8 重新執行第五步,mysqld很快啟動,記憶體分配瞬間完成.
10 小結:使用gflags特別注意第七步,除了第四步放棄監控外,還要注意登錄檔的清理才能完全做到程序監控的失效.
gflags除錯工具的使用
gflags.exe工具是windbg工具的的乙個小工具,功能很強大,使用步驟如下 gflags.exe的作用 跟蹤被除錯的程式 使用步驟 1 將gflags.exe所在目錄放在系統環境變數中 2 設定cdb為預設jit just in time debugger,這樣在命令列執行遇到崩潰的時候就會...
gflags除錯工具
gflags windows除錯工具。使用它幫助我解決了瞎調了一整天的記憶體問題。由於使用了已經delete的指標,vs提示位置又錯誤的情況下,瞎調了一通。怎麼想那塊也不會有問題,可是抱著對vs的信任把錯就歸咎於自己吧!偶然的機會,搜到了gflags,抱著試一試的心態,使用該工具 1.安裝 debu...
gflags除錯工具
gflags windows除錯工具。使用它幫助我解決了瞎調了一整天的記憶體問題。由於使用了已經delete的指標,vs提示位置又錯誤的情況下,瞎調了一通。怎麼想那塊也不會有問題,可是抱著對vs的信任把錯就歸咎於自己吧!偶然的機會,搜到了gflags,抱著試一試的心態,使用該工具 1.安裝 debu...