VC 6 0遠端除錯

2021-05-26 20:15:54 字數 1780 閱讀 3579

先明確下概念,遠端除錯嘛,自然是兩個機器之間除錯。程式執行在目標機器上,偵錯程式執行在本機。當然,目標機器上還是要有少許輔助程式才能跟本機的偵錯程式connect上,以便通訊。一般來說,只需要copy四個檔案到目標機器上就行了:msvcmon.exe、dm.dll、tln0t.dll和msdis110.dll。這四個檔案都能在vc6目錄的common/msdev98/bin目錄下面找到。copy過去之後,執行msvcom.exe,看下~

有個settings的按鈕,不用管。直接點connect就行了~

接著看看本機這邊偵錯程式的設定。首先設定好遠端除錯開關,在build選單下有個debuger remote connecting的子選單,點之。出現個視窗,預設是在local項,我們要選的是network(tcp/ip),然後點設定。會彈出乙個對話方塊,輸入目標機器的ip或者機器名,最後點ok就行了。

接下來把工程開啟,設定最後一步。假設生成的可執行程式名為remotedebug.exe,在目標機器上的路徑為d:/prj/remote.exe,那麼,在本機的project settings裡面,選擇debug頁面的remote executable path and file name下面的編輯框中輸入目標機器中程式的路徑:d:/prj/remotedebug.exe。注意,這裡寫的是從目標機器的角度所看到的路徑。

然後編譯一下程式,把新編譯出來的remotedebug.exe複製到目標機器的d:/prj下面,就可以在本機像平常一樣除錯了。

要注意的事項:

1.要求本機與目標機器上的版本要完全一樣才行。

2.在本機設定遠端除錯路徑時一定要填目標機器上看到的路徑,而不是本機看到的網路路徑

3.除錯開始時,會提示些符號資訊的東東,都確定就行了

4.遠端除錯的設定是全域性設定,跟專案無關。實際上,上面提到本機偵錯程式設定時都沒開啟工程。所以,當不需要遠端除錯時,要從build選單下面的debuger remote connecting的子選單設定回local模式。否則每次都會問你要遠端的資訊噢~~~

基本流程還是一樣的,只不過除錯動態庫的話,除了需要動態庫本身外,還需要呼叫該動態庫的執行程式。這裡假設要除錯的動態庫為testdll.dll,其中匯出乙個函式int add(int a, int b);在可執行程式testcsdn.exe中會呼叫testdll中的add函式。

除錯步驟如下:

1.在編譯完動態庫testdll.dll和可執行程式testcsdn.exe之後,將這倆複製到目標機器上,比如目標機器的d:/debugeasy/remotedebugdll目錄下。

2.設定好本機和目標機器的遠端除錯選項

參見前一篇blog: vc++6.0除錯篇:遠端除錯

3.在本機開啟testdll工程,在build --> project and setting選單中作設定:

上面是本機中testcsdn.exe所在的位置,下面是遠端目標機器上程式所在的位置。注意,這裡都是設定的可執行檔案的名字,而不是我們要除錯的動態庫的名字。

4.點ok後,在add函式中打個斷點,然後按f5開始除錯。會提示要定位動態庫位置,第乙個一般是ntdll.dll,如圖:

如果我們是除錯exe,那麼去掉"try to locate other dlls"選項,點ok就行了。但是我們這次的目標是除錯testdll.dll,所以請有點耐心,直接點ok。可能有很多,直到看到你想要的:

看到沒,提示要目標機器上的testdll.dll檔案在本機中的位置,點browse,選中本機中的位置:

找到本機中的位置後,點"開啟",剩下的dll就都忽略吧,資訊已經足夠了。f5之~

6.守得雲開見月明:

斷點生效了噢,都能看到變數a的值是100了。

VC 6 0遠端除錯

vc開發環境之所以提供遠端除錯的能力,是因為有些情況下單機除錯會讓你崩潰掉。比如,除錯gui程式的wm paint訊息,因為要單步除錯,所以偵錯程式會對介面的重繪產生 heisenberg不確定性原理 當然還有些別的情況也適用,比如程式在測試環境執行的好好的,但是在客戶那行為總是異常,這時候如果可以...

VC 6 0除錯篇 遠端除錯

vc開發環境之所以提供遠端除錯的能力,是因為有些情況下單機除錯會讓你崩潰掉。比如,除錯gui程式的wm paint訊息,因為要單步除錯,所以偵錯程式會對介面的重繪產生 heisenberg不確定性原理 當然還有些別的情況也適用,比如程式在測試環境執行的好好的,但是在客戶那行為總是異常,這時候如果可以...

VC 6 0除錯篇 遠端除錯收藏

vc 6.0除錯篇 遠端除錯收藏 vc開發環境之所以提供遠端除錯的能力,是因為有些情況下單機除錯會讓你崩潰掉。比如,除錯gui程式的wm paint訊息,因為要單步除錯,所以偵錯程式會對介面的重繪產生 heisenberg不確定性原理 當然還有些別的情況也適用,比如程式在測試環境執行的好好的,但是在...