##前言## 最近工做中,須要調試一些程序。鬱悶的是,這些程序不能在IDE中按F5直接調試,由於它們依賴其餘進程傳遞的命令行,也有些依賴其餘進程建立的共享內存。我又不會用windbg調試程序,因此就想了些辦法,能夠在IDE下單步調試。學習
##1. 傳遞的命令行參數固定## 這是一種最簡單的狀況,直接在IDE中,設置命令行啓動便可。測試
##2. 傳遞的命令行參數可變## 父進程可能會建立一些內核對象,並把內核對象的HANDLE傳遞給子進程,因此每次啓動時,參數都是不一樣的。命令行
這要怎麼辦呢?能夠先準備好一個exe,「假裝」成子進程,而後讓父進程拉起。接着打開任務管理器,查看命令行參數並把它填到IDE的啓動參數裏,這樣就能愉快的調試了~調試
##3. 子進程依賴父進程建立的共享內存## 若是共享內存的名稱是固定的,那好辦,用法2便可解決。若是共享內存的名稱動態變化呢,好比父進程寫的共享內存名稱爲「DATA+子進程ID」。對象
咱們固然能夠先啓動父進程,而後肯定共享內存名稱,而後經過改子進程的代碼去調試,但每次調試都要改代碼,太麻煩。繼承
個人解決方法是,直接修改父進程代碼,讓它寫的共享內存名稱固定,子進程也作相應修改,這樣也能用法2調試。待調試OK後,代碼再恢復。進程
##4. 經過LOG調試## 在代碼中,在關鍵的地方打log是頗有必要的。方便開發測試和定位外網問題。記得有位老師說,打log調試的效率時單步調試的兩倍!內存
##總結## 感受仍是有必要學習windbg的,前三個方法僅適用於父進程建立子進程時,沒有讓子進程繼承父進程句柄。開發