Posted on 2011-05-24 15:23
亂78糟 閱讀(5553)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
重要資料
怎么說(shuō)呢,介紹遠(yuǎn)程調(diào)試的文章網(wǎng)絡(luò)上其實(shí)有不少,我這里也會(huì)涉及到,但會(huì)更加的詳細(xì)和細(xì)致,比如win7(32、64)系統(tǒng)下的調(diào)試,家庭版的調(diào)試,以及一些常見(jiàn)問(wèn)題的原因和解決辦法。
一般我們都會(huì)這么操作,比如在VISTA之前的系統(tǒng)如,2K, XP, 2003下(這里都是32位):
(1) 遠(yuǎn)程端:安裝VS2005光盤(pán)"\vs\Remote Debugger\x86\rdbgsetup.exe"。或者直接運(yùn)行或copy本地端的: "Program Files\Microsoft Visual Studio 8\Common7\IDE\Remote Debugger\x86"
(2) 遠(yuǎn)程端:“本地安全策略 - 安全選項(xiàng) - 網(wǎng)絡(luò)訪問(wèn):本地帳戶的共享和安全模式”改為:經(jīng)典-本地用戶以自己的身份驗(yàn)證。
(3) 遠(yuǎn)程端:?jiǎn)?dòng)Remote Debuger,從“工具 - 選項(xiàng)”中將身份驗(yàn)證模式改為“無(wú)身份驗(yàn)證,允許任何用戶進(jìn)行調(diào)試”。
或者直接用命令行:"\ msvsmon.exe" /noauth /anyuser /nosecuritywarn,可以建個(gè)快捷方式以方便運(yùn)行。
(4) 將需要調(diào)試的程序debug版本和相應(yīng)的pdb文件(包含調(diào)試信息)拷貝到遠(yuǎn)程主機(jī),啟動(dòng)該debug版本程序。
(5) 本地:在VS2005中,“工具”--“附加到進(jìn)程”,傳輸選“遠(yuǎn)程”,限定符輸入遠(yuǎn)程端的主機(jī)名或IP地址,回車(chē),選擇我們需要調(diào)試的應(yīng)用程序。如果一切正常,那么我們現(xiàn)在可以像調(diào)試本機(jī)程序一樣調(diào)試遠(yuǎn)程主機(jī)上運(yùn)行的debug版本了。
細(xì)節(jié)和常見(jiàn)問(wèn)題:
(1)如果是64位系統(tǒng),請(qǐng)選擇x64,即\vs\Remote Debugger\x64\rdbgsetup.exe;
(2)不要因?yàn)檫h(yuǎn)程主機(jī)是64位的,就使用64位的remote debugger,它必須和你的應(yīng)用程序匹配,即統(tǒng)一為32位,或64位。
(3)如果是家庭版,控制面板管理工具里是沒(méi)有“本地安裝策略”這個(gè)工具的,那么只能通過(guò)修改注冊(cè)表來(lái)實(shí)現(xiàn),注冊(cè)表項(xiàng):[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa], 找到“forceguest”,如果它的值為1,即dword:00000001,表示“僅來(lái)賓 - 對(duì)本地用戶進(jìn)行身份驗(yàn)證,其身份為來(lái)賓”(這個(gè)描述win7和之前的系統(tǒng)稍有不同),如果值為0,即dword:00000000,表示“經(jīng)典 - 對(duì)本地用戶進(jìn)行身份驗(yàn)證,不改變其本來(lái)身份”。我們需要的值為0。
(4)win7/vista下遠(yuǎn)程連接到目標(biāo)主機(jī),已經(jīng)成功顯示了進(jìn)程列表,但是attach待調(diào)試程序時(shí)候本地出現(xiàn)提示“Unable to attach the process - 系統(tǒng)找不到指定的文件 ”,這是因?yàn)閞emote debugger權(quán)限不足導(dǎo)致,以管理員權(quán)限重新啟動(dòng)remote debugger解決該問(wèn)題。
(5)成功attach到遠(yuǎn)程主機(jī)目標(biāo)程序,但是本地?zé)o法下斷點(diǎn),或者斷點(diǎn)下了之后處于不可被觸發(fā)狀態(tài)。解決辦法:rebuild整個(gè)工程,然后將重新編譯的程序和pdb文件覆蓋遠(yuǎn)程主機(jī)相應(yīng)文件(這個(gè)和本地調(diào)試完全一樣是不:P)。
(6)debug版本的程序拷到遠(yuǎn)程主機(jī)之后,無(wú)法運(yùn)行,那好因?yàn)槿鄙傧鄳?yīng)的debug版本動(dòng)態(tài)庫(kù)和相關(guān)版本配置文件(可以用VS附帶工具Depends查看)。以MFC程序?yàn)槔枰缦虏僮鳎?br />
1)將VS目錄下Microsoft Visual Studio 8\VC\redist\Debug_NonRedist\x86下的三個(gè)目錄相應(yīng)的動(dòng)態(tài)庫(kù)拷貝到遠(yuǎn)程主機(jī)應(yīng)用程序根目錄下或者c:\windows\system32\目錄下。
2)在c:\windows\winsxs\目錄下找到編譯主機(jī)vs2005版本匹配的目錄:Microsoft.VC80.DebugCRT、Microsoft.VC80.DebugMFC,將他們拷貝到目標(biāo)主機(jī)c:\windows\winsxs目錄下。在將本地winsxs\Manifests\目錄下的幾個(gè)相應(yīng)文件拷貝到目標(biāo)主機(jī)這個(gè)目錄下。最后將本機(jī)winsxs\Policies\目錄下的相應(yīng)子文件拷貝到相同目錄下。這個(gè)鏈接說(shuō)的更加的詳細(xì):http://wenwen.soso.com/z/q165079372.htm
注意:win7/vsita下winsxs是沒(méi)有權(quán)限往里面寫(xiě)東西的,所以要更改權(quán)限,這個(gè)可以網(wǎng)上搜索,我就不詳述了。
現(xiàn)在已經(jīng)可以正常運(yùn)行debug版本的程序了,即便該主機(jī)沒(méi)有開(kāi)發(fā)環(huán)境:)。
PS: 一直不會(huì)用CPP BLOG的編輯器,真是煩惱- -!