支援原始檔索引符號伺服器的構建和使用

2021-06-25 09:29:24 字數 2059 閱讀 4781



當我們開發的windows程式崩潰時,我們常會將catch到的dump檔案進行分析。

以往當我們拿到乙個dump時,通常是這樣做的:

1.確定dump發生時的版本號;

2.找到備份的對應版本的pdb檔案;

3.必要時再找對應版本的原始檔;

然而,當發布出去的版本較多時,上述過程是很麻煩的;

建議乙個符號伺服器可以為我們省去上述麻煩。

----以下介紹帶原始檔索引的符號伺服器的建立過程--------:

以下是建立符號伺服器的過程,使用符號伺服器不需要這些工作;

以下描述僅適用於源**伺服器為subversion的情形,其他源**伺服器的情況,請參考相應資料。

1. 準備工作

安裝subversion要注意幾點:

ø  它可以與tortoisesvn共存;

ø  一定不能安裝帶本地化語言的版本,必須是英文版;如果安裝上述推薦位址的silksvn,注意不要選擇本地語言選項。為了確定是否安裝了英文版,可以在命令列中敲svn help,看輸出的是否全部為英文提示;這點尤為重要,而且容易被忽視;

將上述軟體的安裝路徑加入到path環境變數中;注意對於debugging tools for windows,不僅需要把debugging tools for windows目錄加入到path環境變數,還需要將其下面的srcsrv目錄也加進去,因為後續執行的svnindex命令等實際上是在srcsrv目錄中。

2. 為符號檔案新增原始檔索引

當編譯完成後,將符號檔案新增到符號伺服器之前,需要對符號檔案進行處理,在符號檔案上加入我們的原始檔伺服器位址資訊;如果沒有這一步,那麼原始檔只能人工自己去找了。

執行如下命令列:

svnindex /debug /symbols="e:\mysource\symbols" /source=" e:\mysource\"

上述的"e:\mysource\symbols"為符號檔案所在路徑;" e:\mysource\"為原始檔所在路徑

注意上述兩個路徑一定必須是全路徑,不能是相對路徑;這點與若干文獻描述不一致,

但是我的實踐證明,如果是相對路徑,這個命令是不能執行成功的。

上述命令的執行結果如下圖:

3.  將符號檔案新增到符號伺服器

接下來就是把符號檔案加入到符號伺服器了。很簡單,就是一條命令:

symstore.exe add /r /f "e:\aliwwautopackage\trunk\sourcecode\setup\release*.pdb" /s "e:\symbolserver" /t taoyousetup /v "1.0.0.1" /compress /d "e:\symbolserver\symstore_taoyousetup.log" /o

上述命令中,/f後的路徑是符號檔案路徑;/s後的路徑是符號伺服器所在路徑;其他命令引數請參考symstore.exe的命令說明吧。

然後把符號伺服器路徑設定為檔案共享,或者通過http伺服器暴露出去,那就是名副其實的"符號伺服器"了。

以下介紹如何使用符號伺服器:

先介紹windbg中的用法。

1.  設定符號伺服器位址;

如我的設定是這樣的:*srv*d:\symbolcache*

後面那部分就是我們的符號伺服器位址;

2. 上述的d:\sourcecache是本地快取路徑,注意自己先把該資料夾建好了;

3.  在windbg中開啟某dump檔案。

如敲入!analyze -v命令,此時就能夠顯示相應的原始檔資訊了,如:

牛b了吧,如果沒有原始檔索引,上述資訊是不會顯示出來的。 

選擇最後一項後,今後就不會出現了。 

visual studio中的用法更為簡單:

在選單的工具->選項->除錯->常規選項中,將如下兩個選項勾上:

啟用源伺服器支援

將源伺服器診斷資訊列印到輸出視窗

如下圖:

如此設定後,就可以在vs中開啟相應版本的原始檔了。

第乙個文獻看起來有理有據,描述了基本過程;不過在細節方面貌似還是有些問題的;

第三個文獻很詳細... 

MinIO檔案伺服器構建

docker 容器安裝minio檔案伺服器 穩定版docker pull minio minio注意 啟動,此命令在容器關閉時資料自動消失。docker run p 9000 9000 minio minio server data安裝後使用瀏覽器訪問如果可以訪問,則表示minio已經安裝成功。要建...

開原始檔伺服器file service介紹

也可以直接由業務伺服器上傳返回檔案根位址給客戶端。原始碼中包含基於.net standard的服務端sdk,可以生成token 上傳檔案等 配置業務伺服器 片段 public void configureservices iservicecollection services 生成訪問令牌 ifil...

構建 FTP 檔案傳輸伺服器

1,採用 ftp 虛擬使用者的方式,新增三個使用者 devadm,sales,salesadm。5.3.1devadm使用者 5.3.2sales 5.3.3sales adm 解決辦法 在配置檔案中新增 allow writeable chroot yes 解決辦法 guest enable ye...