0、隨便說點
最近因為一些原因一直都沒有更新博客,從今天開始要逐漸恢復了,也是對自己的鞭策。
1、本文目標
本文要說在有DLL 和 EXE源碼的情況下調試DLL 和 EXE, 工具是VC++2010,相信很多同學都會,肯定也有很多同學不會。 自己也曾經因為不懂怎么調試DLL、ActiveX控件而在調試的時候費很多勁。
今天就來說一說一個簡單的調試方法。
2、應用場景
一個DLL:add.dll, 導出了一個函數Add計算兩個數的和
一個EXE:useadd.exe,使用add.dll提供導出函數來計算結果
假設DLL 和 EXE在不同的解決方案中(在同一個解決方案中的方法是一樣的),現在要在EXE的源碼中調試進DLL的源碼。 同時又分兩種情況:①運行EXE ②調試EXE 下面會分別說明。
3、運行EXE 調試進DLL
為了不讓EXE的代碼一下執行過DLL中的導出函數,在該函數之前先加行代碼暫停(比如MessageBox, cin輸入流等)
①啟動EXE
②在EXE中代碼執行到DLL導出函數之前,在DLL項目代碼中添加斷點
③選擇調試菜單--附加到進程--選擇之前的EXE進程
④繼續讓EXE中代碼執行即可



4、調試EXE 調試進DLL
這種情況下當調試DLL附加到EXE進程時,【附加】按鈕是灰色不可用的,因為此時EXE正在被調試,其承載進程是VS調試器,所以應該在進程列表中選擇 進行附加,其他步驟相同。




5、補充
調試ActiveX控件類似
6、再次補充
我們通常會遇到這樣一種情況:【運行】(而非調試)EXE,發現有些運行結果不是期望的,這個時候我們就要【調試】一下看問題在哪里。
這個時候怎么辦呢? 關掉EXE進程,如何重新F5?? 呵呵, 我以前就是這樣。。
應該這樣:在VS打開的項目里,還是點擊 菜單【調試】-【附加到進程】-在進程列表中選擇當前項目對應的EXE進程,附加即可。
