0 前言
VS2008及以上遠程調試上篇已經講過,這里再講下VC++6.0開發環境下的遠程調試能力,僅需下面4步即可,更方便的就接着后面的5-6步。
因為目標程序需要在有采集卡等相關硬件支持下的工控機上工作,工控機上面一般沒有調試環境也不會放置源代碼(出於保密)。假如工控機上的目標程序運行中出了問題,就需要有調試環境卻無法安裝采集卡等硬件的筆記本上進行遠程調試。
1 遠程調試條件
1.兩者之間使用有線或無線連網。
2.目標機器與本機的調試機器連接通訊,需要四個文件:MSVCMON.EXE、DM.DLL、TLN0T.DLL和MSDIS110.DLL。它們可在VC6安裝文件夾的Common/MSDEV98/Bin下面找到。
3.VC 調試程序執行需要的三個動態庫文件:MFC42D.DLL,MFCO42D.DLL,MSVCRTD.DLL,有時可能需要ntdll.dll,它們可在系統文件夾\windows\system32下找到。
或者通過搜索方式找到以上所需的8個文件,開始--搜索--文件或文件夾--在"要搜索的文件或文件夾名為"框中,輸入上面的文件,點"立即搜索"按鈕搜索,然后將它們全部復制到遠程目標機器的執行程序文件夾E:\remote下即可。具有以上條件后,在遠程目標機器上雙擊運行msvcom.exe,不管其它設置,直接點"Connect"按鈕即可。
注意:在Win7之后的系統下,這些文件可能需要和被調試的可執行程序,放在一個文件夾下才可以。
2 開發環境的遠程調試設置
在本機的開發環境中,打開遠程調試開關,點菜單 Build——Debugger Remote Connection...,彈出窗口,默認是在Local項(本地,不遠程調試時,要改回本地選項),現在要選遠程的Network(TCP/IP),然后點按鈕Settings...,在彈出框中,輸入遠程目標機器的IP或者機器名,比如:10.10.1.63,最后點OK即可。
3 設定目標機器的執行路徑和文件名
比如在本機筆記本上調試生成的可執行程序名為c:\dkqchtx\debug\dkqchtx.exe,在遠程目標機器工控機上的路徑為e:\remote\dkqchtx.exe,那么,在本機開發環境的菜單 Project —— Settings,在Debug頁面底部的Remote executable path and file name框中,輸入在遠程的工控機上程序運行所在的路徑和文件名:e:\remote\dkqchtx.exe。
4 啟動調試
編譯一下程序,把新編譯出來的dkqchtx.exe復制到目標機器的e:/remote下面,就可以在本地機器上啟動調試了。調試中的詢問的信息(可能會有很多)一律按確定即可。
=============
雖然到此就完成了整個遠程調試項目,但是這樣有一個問題,就是每次小小的改動,編譯鏈接后,都需要將本地機器上的執行文件復制到遠程機器設定的路徑下才可以調試,也就是需要始終保持兩者完全一致,調試就很不方便,為了改變這種狀況,可將遠程目標機器的執行程序所在的文件夾讀寫共享,讓本機筆記本上登錄的用戶具有讀寫權,直接將編譯鏈接的執行程序放到遠程目標機器上。
5 將本地生成的可執行程序直接放到遠程機器的讀寫共享文件夾下,以方便調試
1.讀寫共享遠程文件夾
在遠程工控機的E:\盤的根目錄下,右擊文件夾remote,選擇"共享安全",在彈出的框中,點選"共享此文件夾",共享名稱改為remote_share,在"允許的用戶數量"中輸入1,這樣防止多用戶讀寫。點按鈕"權限",在彈出框的"輸入對象名稱來選擇"中,輸入劉亮,這是兩者所在的局域網中,登錄到本地筆記本上的用戶,點"確定"按鈕,劉亮就會出現在"組或用戶名稱"框中,選擇其中的劉亮,將下面3個選項"完全控制","更改","讀取"都選上,點"確定"即可,當然可以將用戶Everyone 刪除會更安全。這樣就是讓登錄本地筆記本上的用戶劉亮,具有讀寫遠程機器上的文件夾E:\remote共享后的能力,以便可將輸出的可執行程序,直接寫入到遠程機器的讀寫共享文件夾remote_share下。
2.設置開發環境的輸出文件位置
在本地開發環境的菜單 Project -- Settings...,切換到Link頁面,在Output file name框中,輸入\\10.10.1.63\remote_share\dkqtx.exe,這里10.10.1.63是遠程機器的ip地址,remote_share是文件夾共享后的名稱,dkqtx.exe是編譯鏈接后輸出的調試文件,這樣就將輸出直接放到遠程讀寫的共享文件夾下。
3.重新設定執行debug會話和目標機器的執行路徑和文件名
在本地開發環境中,Project——Settings...,切換到Debug頁面,在Excutable for debug session框中已經跟着自動改為:\\10.10.1.63\remote_share\dkqtx.exe,與上面Link輸出設置一致。在本Debug頁面底部的Remote executable path and file name框中,要輸入在遠程的工控機上程序運行所在的路徑和文件名:e:\remote\dkqtx.exe 即可。注意,這里的文件名稱從原來dkqchtx.exe改為 dkqtx.exe, 也就是說本地和遠程上的文件名,可以是任意只要一致就可以了。
重新全編譯連接,Build——Rebuild All,就可以了,以后任何的改動就不需要復制文件,調試很方便。
6 將遠程共享文件夾映射成本地盤
以上Link輸出和 Debug的會話執行,都是較長的子串\\10.10.1.63\remote_share\dkatx.exe, 為了書寫簡單,可以在本地機器上,將遠程機器共享的文件夾映射成一個本地盤符,方法如下:
在本地機器的IE瀏覽器地址欄里,輸入遠程機器的IP地址:\\10.10.1.63 按回車,右擊出現的共享文件夾remote_share——選擇映射網絡驅動器,在彈出的頁面中的驅動器框中,選擇一個你本地沒有使用的盤符,比如Y:,這樣就將遠程機器10.10.1.63下的共享文件夾remote_share,映射成Y: ,以后寫\\10.10.1.63\remote_share\dkatx.exe的地方,就可簡寫為Y:\dkqtx.exe ,使用起來很方便。
當然,調試的總條件,需要選擇Debug 調試方式,菜單 Build——Set Active Configuration... ,從中選擇 Win32 Debug ,之后需要重新全編譯連接,菜單 Build——Rebuild All。
上面的內容大致都是http://blog.sina.com.cn/s/blog_45eaa01a01014eb5.html 中的內容,以下為親試截圖:
最終在目標機器上將程序調試運行起來了~