顯示具有 Debug 標籤的文章。 顯示所有文章
顯示具有 Debug 標籤的文章。 顯示所有文章

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

2009年3月7日 星期六

Symbol Server

1. 安裝Apache

2. 打開httpd.conf做一些設定
設定DocumentRoot
DocumentRoot "d:/Apache2.2/htdocs"
設定Directory 權限
<directory "d:/Apache2.2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</directory>
然後在DocumentRoot裡建一個子資料夾Symbol

3. 安裝Debugging Tools for Windows

4.使用symstore
利用Debugging Tools for Windows裡的symstore,把Project的debug symbol存在symbol server

symstore add /r /f d:\samplecode\release\*.pdb /s D:\Apache2.2\htdocs\symbol /t "SampleProject" /v "1.0.1001" /c "Sample add"

OK,到現在,我們有一台HTTP 的symbol server,裡面有我們的debug symbol,接下來當我們要Debug時,只要指定這台symbol server就可以了。

設定WinDbg的symbol server


srv*c:\websymbol*http://192.168.0.4/symbol

第一個星號之後是指定下載下來的symbol要放在那裡,第二個星號是指定我們的symbol server