教你配置windows上的windbg,linux上的lldb,打入clr內部這一篇就夠了
阿新 • • 發佈:2020-05-09
## 一:背景
### 1. 講故事
前幾天公眾號裡有位兄弟看了幾篇文章之後,也準備用windbg試試看,結果這一配就花了好幾天,(づ╥﹏╥)づ,我想也有很多躍躍欲試的朋友在配置的時候肯定會遇到這樣和那樣的問題,所以我覺得有必要整理一下,讓大家少走彎路。
## 二:一些基礎概念
### 1. 在哪下載
現在安裝windbg越來越麻煩,還要安裝Windows 10 SDK,很多人就栽在這裡,其實大家可以直接在網上找一鍵打包的windbg 6.0版本即可,才30多M,調生產調本地都很方便,順帶還可以練練SOS命令。
雲盤:https://pan.baidu.com/s/1VqXVIGVHxAZVPNds1525Jg 提取碼:mahg
外網:http://www.33lc.com/soft/96743.html
### 2. 版本問題
解壓開啟會有一個x64和x86資料夾,很顯然,32位的程式用x86下的windbg除錯,64位的程式用x64的windbg除錯,如下圖:
![](https://img2020.cnblogs.com/blog/214741/202005/214741-20200508234919837-1249568435.png)
### 3. 其他的問題
我比較喜歡用64bit程式,所以這裡使用64位的windbg。
#### <1> 配置微軟公有符號
符號其實就是pdb檔案,我們在debug模式下編譯專案都會看到這個,它的作用會對dll進行打標,這樣在除錯時通過pdb就能看到區域性變數,全域性變數,行號等等其他資訊,在FCL類庫中的pdb檔案就放在微軟的公有伺服器上,`SRV*C:\mysymbols*http://msdl.microsoft.com/download/symbols`。
![](https://img2020.cnblogs.com/blog/214741/202005/214741-20200508234933929-1009548462.png)
#### <2> 理解sos.dll和clr.dll
很多時候大家都是事後除錯,所以需要在生產上抓一個dump檔案,為了將dump檔案逆向到clr上的執行時狀態,你必須要尋找到當時執行程式clr版本,同時也要找到對應clr版本的sos.dll,他們通常是在一起的,sos 就是 你 和 clr互動的渠道,很多人都卡在尋找正確版本的sos和clr版本上。。。如果不清楚,我可以畫張圖。
![](https://img2020.cnblogs.com/blog/214741/202005/214741-20200508234942536-1000368036.png)
有了這個前置基礎,接下來就可以在windows和centos上進行配置實踐了。。。