小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

微軟符號服務器下載符號總結(jié)

 herowuking 2015-05-30

說在前面:   微軟符號服務器地址http://msdl.microsoft.com/download/symbols, 但是你手動在瀏覽器里面輸入是訪問不到的,他只提供給調(diào)試程序進行下載。

還有個辦法,到這里下載Windows 符號程序包:https://msdn.microsoft.com/zh-cn/windows/hardware/gg463028
例如,下載Win7-x64和x86的所有符號,安裝到本地目錄。然后配置Visual Studio,工具-->選項-->符號...

1、方法1:  使用vs進行下載,當然必須是vs2003以后的版本,通過attach到一個進程中或者啟動一個程序進行調(diào)試,然后打開模塊列表窗口,在列表中每一個模塊進行右鍵,即可進行下載符號

方法2: 使用windbg進行下載,同樣是attach或run一個程序,設置一下符號路徑,然后使用

.reload

或者.reload /f /v ntoskrnl.exe  (這個試過好像不可以,具體請高手指出原因)

當然也可以強制進行符號加載 使用  

ld *  加載當前模塊中所有的模塊符號   

或者 ld ntdll         (加載指定模塊)

方法3:  采用symchk.exe 來進行加載(優(yōu)點:在不調(diào)用dl的情況就可對dll進行符號加載,防止dll符號文件遺漏加載的問題)

symchk /r c:\windows\system32 /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

這個的意思是對c:\windows\system32下的exe和dll進行遞歸加載符號

目前不太清楚,怎么指定只對特定文件進行單獨加載符號文件,請高手指出

方法4: 自己寫下載符號文件的程序(當然如果你對windows的整個調(diào)試機制比較熟悉,可以采用,但是個人覺得沒那個必要,畢竟微軟提供了工具讓你使用了)

建立 Symbols服務器
建立Symbols Server,最簡單和方便的辦法是使用網(wǎng)絡共享路徑,典型的,我們會在一臺服務器上,依Symbols的類型建立多個路徑:
\\symbols_server\ReleaseSymbols
\\symbols_server\TempSymbols
\\symbols_server\WinSymbols
其中ReleaseSymbols用于保存所有產(chǎn)品正式發(fā)布版本的symbols,這個目錄中的pdb文件是不能刪除的,TempSymbols用于保存非正式版本(例如測試階段)的pdb文件,把它們分開保存,是因為pdb文件比較大,如果磁盤空間不夠,就可以刪除一些TempSymbols中的文件來節(jié)約空間。第三個目錄WinSymbols用于存儲各種windows版本系統(tǒng)本身的symbols。
對于ReleaseSymbols和TempSymbols目錄應該是可控的,即一般設置管理員可寫,其它人只讀,通常由管理員在編譯機編譯完后同時更新其pdb文件。WinSymbols可以設置所有人可讀寫。

設置調(diào)試器Symbols路徑
WinDBG、VC.Net及以上版本都可以通過設置環(huán)境變量指定Symbols路徑,并都能根據(jù)環(huán)境變量設置自動去微軟服務器拉取window系統(tǒng)symbols。右鍵我的電腦—〉“屬性”—〉“高級”—〉“環(huán)境變量”—〉“系統(tǒng)變量”,新建兩個環(huán)境變量:
_NT_SYMBOL_PATH=srv*\\symbols_server\WinSymbols*http://msdl.microsoft.com/download/symbols
_NT_ALT_SYMBOL_PATH=cache*c:\symbols;\\symbols_server\ReleaseSymbols;\\symbols_server\TempSymbols;\\symbols_server\WinSymbols
這樣設置后,調(diào)試器首先會到_NT_ALT_SYMBOL_PATH指定的共享路徑中去尋找pdb文件,并把找到的文件緩存到c:\symbols目錄下,下次訪問時就不用到共享目錄中查找,這樣可以提高速度。當在_NT_ALT_SYMBOL_PATH中找不到時會查看路徑_NT_SYMBOL_PATH,接著自動從微軟官方網(wǎng)站下載windows系統(tǒng)的pdb文件,并緩存到共享目錄\\symbols_server\WinSymbols中,緩存的好處是當其它人下載相同pdb文件時就直接從共享目錄拉取,不用再跳到微軟網(wǎng)站拉取。
注意設置以上變量后第一次使用Windbg或者VS調(diào)試時,因為要下載windows系統(tǒng)的pdb文件,可能要等待一段時間(Windbg會在命令行窗口右下角顯示“BUSY”狀態(tài),但也有可能不顯示狀態(tài),VS在狀態(tài)欄會顯示Loading symbols for XXX),并且pdb文件都相對比較大,視網(wǎng)速快慢可能要等待十幾分鐘到幾個小時。另外在測試中發(fā)現(xiàn),WinDbg下載symbols的速度比VS快得多。
如果要經(jīng)常使用VC.Net及以上版本,上面的設置會有些問題,因為如果有一些dll沒有symbols,這時VS每次進入調(diào)試狀態(tài)時都會試圖到微軟網(wǎng)站查找相應的pdb文件,導致啟動調(diào)試的速度很慢,因此最好的方法是在windbg的菜單“File”->“Symbol File Path...”填入cache*c:\symbols;\\bobdeng-pc\ReleaseSymbols;\\bobdeng-pc\TempSymbols;\\bobdeng-pc\WinSymbols;srv*\\bobdeng-pc\WinSymbols*http://msdl.microsoft.com/download/symbols
而對VS.Net及以上版本,在“Tools”—〉“Options”—〉“Bebugging”—〉“Symbols”面板中,逐一添加pdb路徑\\bobdeng-pc\ReleaseSymbols、\\bobdeng-pc\TempSymbols\\bobdeng-pc\WinSymbols,在“Cache symbols from server...”中填入c:\symbols。然后僅僅在需要用VS打開dmp文件定位Crash時才添加Windows系統(tǒng)Symbols路徑:http://msdl.microsoft.com/download/symbols,當調(diào)試完后可以去掉該項選中狀態(tài)使其失效。或者使用symchk工具下載symbols,見后面《附注:手工下載windows symbols的方法》

配置pdb文件編譯輸出目錄
常常一個產(chǎn)品包含許多模塊,為方便pdb管理,可以設置編譯時統(tǒng)一輸出symbol到一個的目錄,例如Debug版本輸出到pdbDebug,Release版本輸出到pdb目錄。在VC6.0下可以通過“工程屬性”-〉“Link”-〉“Project Options”手工修改輸出路徑,VS.Net類似也可以指定輸出目錄。

同步PDB文件到Symbols服務器
pdb文件同步可以使用windbg安裝目錄下的symstore.exe命令行工具,為方便操作,可以在pdb文件輸出目錄建立兩個批處理文件,例如
新建批處理文件UpdateTemp.bat,用于同步該目錄下所有的pdb文件到服務器共享目錄\\symbols_server\TempSymbols,內(nèi)容如下:
"C:\Program Files\Debugging Tools for Windows (x86)\symstore.exe" add /r /f "./*.*" /s \\symbols_server\TempSymbols /t "MyProduct" /v "Temp"
@PAUSE
類似的,建立另一個批處理文件UpdateRelease.bat,同步pdb文件到服務器共享目錄\\symbols_server\ReleaseSymbols

開發(fā)人員配置編譯生成的本地symbols路徑
并非所有編譯的pdb都同步到symbols服務器上,為方便開發(fā)者自己調(diào)試,還需要配置本機的pdb文件路徑,對于windbg,可以在菜單“File”->“Symbol File Path...”填入編譯時的pdb輸出目錄,多個目錄用;隔開。
使用VS時,在菜單“Tools”—〉“Options”—〉“Bebugging”—〉“Symbols”面板中填入編譯時的pdb輸出目錄。


附注:手工下載windows symbols的方法
如果不想等到調(diào)試時才下載,也可用通過windbg自帶的symchk.exe工具下載windows系統(tǒng)的symbols,或者某個dmp文件所有相關(guān)模塊的symbols,并且通過這個工具下載速度也會更快一些,具體方法如下:
1. 下載dmp文件所有相關(guān)模塊的symbols,緩存到共享路徑,便于其它人快速下載。
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /id c:\MyApplication.dmp /s SRV*\\symbols_server\WinSymbols\*http://msdl.microsoft.com/download/symbols

2. 下載某個已運行進程所有相關(guān)模塊的symbols,緩存到共享路徑,便于其它人快速下載。
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /ie qq.exe /s SRV*\\symbols_server\WinSymbols\*http://msdl.microsoft.com/download/symbols

3. 下載某個exe/dll文件對應的symbols,例如user32.dll,輸入命令行:
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" c:\windows\system32\user32.dll /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

4. 下載整個目錄下(例如system32)所有模塊的symbols:
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /r c:\windows\system32\ /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多