2009年4月12日 星期日

Source Server

在前面我們有了symbol server,在debug時可以自動把symbol從server上捉下來,但是沒有source code我們只能看到call stack,如果我們也想要讓source code都自動的捉下來,我們可以在把pdb放在server上之前做source indexing,source code可以放在原來的version control system上或是HTTP server上,加上適當的設定,source code就會被自動捉下來。

我們以perforce為例子來做source indexing
1. 安裝Debugging Tools for Windows

2. 設定環境變數P4CLIENT為你的workspace,以本例來說是client_localhost_1666
執行p4 info,確定"Client name"是你的workspace,而且"Server address"是指到正確的perfroce server,以本例來說,是指定到"localhost:1666"

3. 打開srcsrv.ini檔案(C:\Program Files\Debugging Tools for Windows\srcsrv),把變數MYSERVER指定為"localhost:1666"

4. 登入perforce取得token

5. 執行ssindex.cmd來做source indexing,index資料會放在pdb檔的srcsrv區塊
ssindex.com -system=p4 -source=d:\samplecode\src -symbols=d:\samplecode\src\release

-system是設定source indexing為perforce
-source是指定你source code所放的位置
-symbols是指定pdb檔所在的位置

6. 執行pdbstr來檢查結果
pdbstr.exe -r -p:d:\samplecode\src\release\sampleexe.pdb -s:srcsrv

7. 把做好的pdb檔放到symbol server上

接下來我們要如何使用?
1. copy srcsrv.ini到windbg的folder
2. 確定MYSERVER指定到localhost:1666
3. 在[trusted commands]中加上
p4.exe=C:\Program Files\Perforce\p4.exe
4. 執行windbg,設定好symbol server,當你在debug時,windbg就會幫你把source code從perforce捉下來,放在他的src folder

HTTP source server
我們也可以把source code 放在HTTP server上面,把HTTP server當做source server
1. 在做完source indexing之後,把source code extract 出來
walk.cmd d:\SampleCode\src\release\*.pdb srctool -x
extract出來的source code會放在MYSERVER的folder裡

2. 把MYSERVER整個folder放到HTTP server上,本例是放在http://localhost/source/目錄之下

3. 設定windbg有兩種方法
3.1 設定source file path 為srv*
然後修改windbg的srcsrv.ini,增加三個變數在[variables] section裡
SRCSRVCMD=
MY_SOURCE_ROOT=http://localhost/source
SRCSRVTRG=%my_source_root%\%var2%\%var3%\%var4%\%fnfile%(%var1%)
3.2 直接設定source file path 為srv*http://localhost/source;

4. 再用windbg來debug,這時他就會從HTTP server上面捉下對應的source code

沒有留言:

張貼留言