vc下dll調試

         http://blog.csdn.net/coding_hello/archive/2008/11/24/3364111.aspx

 

        很多初學DLL和COM編程的人都爲DLL的調試方法發愁。我結合自己學習COM的體驗,總結DLL程序的調試如下。
  DLL是一個不可運行的程序,它必須有其它程序的加載纔可運行。故要調試DLL程序,需要一個測試程序。根據測試程序的不同,我將DLL調試分三種請況。
  1.測試程序有源碼。
  2.測試程序無源碼,只有可執行(exe)文件。
  3.對DLLRegisterServer函數和DLLUnregisterServer函數的調試。
  一:測試程序有源碼
  對於這種情況,我們可將測試程序的工程(dllCall)和dll程序的工程(dllTest)建立在同一個工作區下。
  編譯鏈接dllCall文件,確保生成了dllCall.exe,然後我們將dllTest設置爲活動工程。因dllTest需要有測試程序,我們可按如下方法設置。
  選擇Project->Settings->Debug->Executable for Debug session:
  在其文本框中填入dllCall.exe的路徑。
  按以上操作設置好後,編譯,鏈接dllTest沒錯後,開始調試。
  在dllCall中設置斷點。
  在dllTest中設置斷點。
  斷點設置好後,在確保dllTest爲活動工程的前提下,開始調試,程序將在斷點處停下。
  二:測試程序無源碼
  如果測試程序無源碼,則不能將測試程序和dll程序聯合調試,但可以只調試dll文件。在這種情況下,dllCall.exe的路徑要填對,確定dllCall.exe的確調用了dllTest工程下的dllTest.dll文件。
  三:對DLLRegisterServer函數和DLLUnregisterServer函數的調試
  編程com程序,一般將com的註冊和卸載集成在dll文件中,故在dll文件中會實現DllRegisterServer函數和DllUnregisterServer函數,然後通過windows自帶的regsvr32.exe命令來實現dll的安裝和卸載。
  Regsvr32.exe dllTest.dll安裝dllTest.dll
  Regsvr32.exe /u dllTest.dll卸載dllTest.dll
  從上可看出,調試程序爲Regsvr32.exe,它帶有參數,這是和上述兩種情況不同的地方,其餘的過程基本相似。
  先看看DLLRegisterServer的調試,路徑設置。
  然後在DllRegisterServer處設置斷點。
  DllUnregisterServer調試。
  在DllUnregisterServer出設置斷點

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

方法1: 對DLL的工程DEBUG,
在DLL工程的Project Setting->Debug->Executable for debug session中加入你的.exe的路徑和名字。
可以在dll中設置斷點,.exe程序必須要調用dll中函數。

方法2: 有個更好的方法:(我也沒試過)在settings/debug中category選additional dlls,
然後將你要調試的dll加進來。這樣,即使你用loadlibrary動態加載dll,也可以加斷點了。

方法3: 直接運行DLL就行了,那會讓你指定調試程序,你把你準備調用它的程序的exe文件指給它,斷點運行就可以了.

        下面進入正題:你把調用dll的.exe文件拷到dll的debug目錄下,就可以調試斷點了,進行調試了.我認爲這句話是關鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章