青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Heath's Blog

There is no end, it is just the beginning! - A Game Developer's Notes

Window調(diào)試中的符號文件與源代碼管理

    游戲開始進(jìn)行第二次封閉測試,這次參與人數(shù)較多,隨之而來的便是無數(shù)的崩潰dump。雖然在自動構(gòu)建流程中已經(jīng)對PDB和EXE按版本號進(jìn)行了保存,但由于構(gòu)建操作人員手動修改構(gòu)建號,出現(xiàn)多個版本對應(yīng)相同版本號的問題,以及BUG單填寫人以基線版本號而非真實(shí)版本號提交的情況,經(jīng)常浪費(fèi)開發(fā)人員的時間和精力去找對應(yīng)的PDB,降低了崩潰解決的響應(yīng)速度。所以非常有必要建立一套自動化方案,得到dump文件后啟動WinDbg進(jìn)行分析時能夠自動獲取對應(yīng)的PDB和源代碼,WinDbg就提供了這樣一套方便實(shí)用的工具。

1. 建立源代碼索引

     WinDbg提供了一套用于管理pdb對應(yīng)的源代碼的工具,位于其安裝目錄的srcsrv下,對VSS、SVN、CVS、Perforce提供了支持,分別對應(yīng)vssindex.cmd、svnindex.cmd、cvsindex.cmd、p4index.cmd這四個perl腳本。其實(shí),ssindex.cmd才是具體實(shí)現(xiàn),它根據(jù)傳入的版本控制系統(tǒng)標(biāo)識,調(diào)用對應(yīng)的perl module。

     svnindex.cmd通過/source和/symbols參數(shù)來指定源代碼目錄和PDB目錄,/debug可輸出處理的詳細(xì)信息,/user和/pass提供svn賬戶和密碼。PDB文件中有一節(jié)專門用于存放源代碼文件列表及處理命令,可通過pdbstr -r -p:PdbFileName -s:srcsrv查看。

 

     svnindex.cmd /debug /source="E:\CodeBase_SVN\Client\trunk\tools\CutSceneEditor" /symbols="E:\CodeBase_SVN\Client\trunk\bin\Release\CutSceneEditor" /user="user" /pass="pwd"

 

     在執(zhí)行上面命令前,確保Perl和Subversion已經(jīng)被安裝且設(shè)置了PATH環(huán)境變量。該命令將提取source code的服務(wù)器路徑和當(dāng)前Revision,然后寫入PDB。下面是通過pdbstr獲取的信息:

     Image(9)

     上面輸出是經(jīng)過格式化的,原始信息可以通過srctool -n查看:

     Image(10)

     可以看出,原始代碼路徑后面跟了一條svn cat指令,由于沒有指定sourcepath,所以%targ%缺省為當(dāng)前路徑("C:\Program Files\Debugging Tools for Windows (x64)\srcsrv")。 

2. 創(chuàng)建符號服務(wù)器

    所謂符號服務(wù)器,最簡單的形式就是文件共享服務(wù)器。我們使用symstore命令,將1中產(chǎn)生的pdb添加到一個文件共享服務(wù)器上,如:

 

     symstore.exe add /f "E:\CodeBase_SVN\Client\trunk\bin\Release\CutSceneEditor\*.pdb" /s "\\server.com\pub\Symbols" /t "CutSceneEditor" /v "Build 4171" /c "fix memory leak"

 

     該命令會根據(jù)PDB的signature和age產(chǎn)生一個GUID,并將PDB放置于以改GUID為名字的目錄下:

     Image8

    當(dāng)debug時,將UNC路徑添加到_NT_SYMBOL_PATH中(如:_NT_SYMBOL_PATH=CACHE*F:\Symbols;SRV*http://msdl.microsoft.com/download/symbols;SRV*\\server.com\pub\Symbols),調(diào)試器會自動到指定的符號服務(wù)器上去搜索對應(yīng)的pdb文件。

     symstore大大簡化了符號的版本管理問題,關(guān)于它的詳細(xì)介紹可參考symstore介紹

     值得注意的是,symstore沒有鎖機(jī)制,并不支持多人同時操作。實(shí)際情況中,也只有自動構(gòu)建時才會做此操作。

3. 使用WinDbg分析Dump文件

      我們在代碼中加入發(fā)生異常寫MiniDump的功能,在程序崩潰時產(chǎn)生dump文件。在使用WinDbg分析dump文件時,需要設(shè)置Symbol File Path和Source File Path,也可以直接設(shè)置環(huán)境變量_NT_SYMBOL_PATH和_NT_SOURCE_PATH。在設(shè)置_NT_SOURCE_PATH時使用"SRV*CachePath"將表示啟用代碼提取功能,執(zhí)行svn cat寫入到CachePath指定的目錄,否則將使用原始路徑。此后,通過點(diǎn)擊Call Stack中的函數(shù)調(diào)用便會觸發(fā)從svn讀取對應(yīng)代碼的操作(通常會有一個安全警告窗口彈出)。

     對于使用WinDbg進(jìn)行調(diào)試在此就不多講了,推薦一本不錯的書《Advanced Windows Debugging》。

 

參考資料

[1] Source Indexing and Symbol Servers: A Guide to Easier Debugging

[2] Source Server Helps You Kill Bugs Dead In Visual Studio 2005

posted on 2012-03-26 23:10 Heath 閱讀(3986) 評論(2)  編輯 收藏 引用 所屬分類: Game Development

Feedback

# re: Window調(diào)試中的符號文件與源代碼管理 2012-03-27 09:40 tb

分享的沒錯   回復(fù)  更多評論   

# re: Window調(diào)試中的符號文件與源代碼管理 2012-03-28 11:43 fseraph

恩,我們還用Python搞了一套自動解析Dump,統(tǒng)計(jì)崩潰函數(shù),同時輸出報(bào)表的工具,這樣就很方便了。不過Google有一個完整的開源解決方案,叫breakpad。以前做的時候不知道有這東西。  回復(fù)  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            奶水喷射视频一区| 亚洲高清视频中文字幕| 亚洲性视频网站| 国产精品久久久久影院亚瑟 | 久久精品午夜| 在线观看欧美成人| 欧美激情一区二区三区在线| 欧美成人午夜激情| 亚洲视频在线播放| 亚洲免费一级电影| 极品日韩av| 亚洲国产精品www| 欧美色精品在线视频| 香蕉久久久久久久av网站| 欧美一区激情| 日韩视频亚洲视频| 亚洲一区亚洲二区| 在线观看日韩av电影| 亚洲国产精品传媒在线观看| 欧美亚韩一区| 麻豆av一区二区三区久久| 欧美激情女人20p| 欧美亚洲网站| 蜜桃久久av一区| 欧美一级欧美一级在线播放| 鲁大师成人一区二区三区| 一本一本久久| 久久久久九九九| 亚洲一区中文字幕在线观看| 久久精品免费电影| 亚洲一区二区三区免费在线观看| 欧美一级视频免费在线观看| 日韩一区二区高清| 久久久91精品国产| 亚洲专区在线视频| 欧美插天视频在线播放| 久久国产福利| 欧美视频在线观看一区| 欧美成人免费小视频| 国产精品毛片va一区二区三区| 免费观看成人www动漫视频| 国产精品久久久久久久久免费樱桃 | 久久亚洲精品中文字幕冲田杏梨 | 小黄鸭精品aⅴ导航网站入口| 亚洲精品一二| 久久久久国产一区二区三区| 欧美亚洲专区| 欧美性天天影院| 亚洲欧洲一区二区三区| 在线精品视频免费观看| 性色av一区二区三区在线观看| 亚洲午夜高清视频| 欧美精品一区二区三区在线播放 | 亚洲人成网站在线播| 欧美在线视频免费| 亚洲欧美三级在线| 欧美特黄视频| 亚洲最新在线视频| 99成人在线| 欧美日本韩国一区| 亚洲黄色一区二区三区| 最新中文字幕一区二区三区| 久久久久天天天天| 麻豆免费精品视频| 亚洲国产91| 免费人成网站在线观看欧美高清| 欧美freesex8一10精品| 在线成人欧美| 欧美ed2k| 亚洲日本电影| 亚洲一区欧美激情| 国产精品乱码一区二区三区| 亚洲午夜精品久久久久久浪潮| 先锋资源久久| 国产日韩欧美在线播放| 欧美一区在线直播| 免费观看30秒视频久久| 亚洲第一精品影视| 欧美国产三级| 中国日韩欧美久久久久久久久| 亚洲欧洲av一区二区| 国产香蕉久久精品综合网| 性色一区二区三区| 欧美xx视频| 在线一区观看| 国产午夜精品久久久| 久久久久免费观看| 亚洲人成精品久久久久| 亚洲欧美韩国| 一区在线播放| 欧美日韩一卡二卡| 欧美一区二区三区视频免费| 欧美成人亚洲成人日韩成人| 亚洲免费观看高清在线观看| 国产精品三上| 久久亚洲免费| 日韩午夜精品| 久久亚洲不卡| 亚洲一区二区日本| 国产在线视频欧美| 欧美精品在线网站| 欧美一区在线视频| 亚洲免费高清| 免费人成精品欧美精品| 亚洲一级免费视频| 好看的日韩av电影| 欧美午夜剧场| 另类激情亚洲| 午夜在线成人av| 亚洲精品美女久久久久| 久久久久久久综合日本| 在线亚洲一区观看| 亚洲国产欧美另类丝袜| 国产精品丝袜xxxxxxx| 欧美波霸影院| 久久爱另类一区二区小说| 日韩一级大片在线| 欧美高清视频www夜色资源网| 亚洲欧美久久久久一区二区三区| 亚洲国产日韩一区二区| 国产一区清纯| 国产伦精品一区二区三区| 欧美精品18videos性欧美| 久久精品国产999大香线蕉| 亚洲图片在线| 99国产精品99久久久久久| 欧美成人性生活| 久久综合久久久久88| 欧美一级在线播放| 亚洲一区久久久| 9i看片成人免费高清| 91久久精品国产91性色tv| 一区免费观看| 一区三区视频| 韩国v欧美v日本v亚洲v| 国产亚洲综合在线| 国产亚洲精品自拍| 国模套图日韩精品一区二区| 欧美www在线| 久久亚洲春色中文字幕| 欧美中文字幕视频| 欧美一区二区福利在线| 午夜久久一区| 久久福利电影| 久久综合网络一区二区| 久久久777| 久久久噜噜噜久久中文字免| 久久精品人人做人人爽| 久久久久综合一区二区三区| 久久久久久久久伊人| 久久久国产精彩视频美女艺术照福利| 欧美亚洲视频一区二区| 久久成人免费电影| 久久男人资源视频| 美女国内精品自产拍在线播放| 久久综合九色| 欧美精品亚洲一区二区在线播放| 欧美精品www在线观看| 欧美日韩一区在线视频| 国产精品久久午夜夜伦鲁鲁| 国产视频一区三区| 在线看片欧美| 一区二区三区黄色| 国内不卡一区二区三区| 亚洲在线观看视频| 亚洲综合色婷婷| 久久久久国产免费免费| 美日韩精品视频| 欧美日韩一区不卡| 国产欧美日韩不卡| 亚洲国产一区在线观看| 一区二区三区 在线观看视| 亚洲一区二区四区| 久久久噜噜噜| 亚洲另类黄色| 欧美一区三区三区高中清蜜桃| 久久一区中文字幕| 欧美日韩免费观看一区二区三区| 91久久国产精品91久久性色| 亚洲高清123| 亚洲精品一区在线观看| 午夜精品久久| 欧美大片在线观看一区| 一区二区日韩伦理片| 欧美淫片网站| 欧美色图首页| 亚洲人成欧美中文字幕| 欧美一级黄色录像| 亚洲福利视频三区| 亚洲欧美精品伊人久久| 欧美绝品在线观看成人午夜影视| 国产精品日韩欧美一区二区三区 | 欧美大胆人体视频| 国产美女精品视频| 99成人免费视频| 麻豆成人在线播放| 亚洲影视九九影院在线观看| 欧美激情一区在线| 在线看片日韩| 国内精品久久久久久久影视麻豆 |