Windbg 無(wú)法下載 pdb 的解決方法

符號(hào)文件路徑設(shè)置

什么是符號(hào)文件

默認(rèn)情況下惶看,release 后的 exe 或 dll 都是無(wú)符號(hào)的启泣。沒(méi)有符號(hào)阵子,就無(wú)法調(diào)試應(yīng)用程序政基,很多時(shí)候客戶機(jī)器上產(chǎn)生了崩潰就無(wú)法確定問(wèn)題原因贞铣。這時(shí)候,就需要使用 windows 提供的 pdb 文件來(lái)解決該問(wèn)題沮明。

PDB(Program Database)辕坝,是微軟開(kāi)發(fā)的用于存儲(chǔ)程序調(diào)試信息的文件格式,在編譯期生成荐健,存儲(chǔ)了源文件名稱酱畅,變量名,函數(shù)名江场,F(xiàn)PO(幀指針)圣贸,對(duì)應(yīng)行號(hào)等信息。

配置符號(hào)文件

配置符號(hào)文件的方式有很多種扛稽。下面以在 windbg 中的配置為例吁峻。

  • 命令行輸入

    在 windbg 的命令行中輸入:

    0:040> .sympath SRV*c:\符號(hào)文件路徑*http://msdl.microsoft.com/download/symbols
    0:040> .reload
    
  • 在 Symbol Search Path 窗口中輸入

    選擇 File -> Symbol Search Path 后輸入: SRV*c:\符號(hào)文件路徑*http://msdl.microsoft.com/download/symbols,復(fù)選 reload在张,點(diǎn)擊 OK用含。

  • 修改環(huán)境變量

    計(jì)算機(jī)右鍵 -> 高級(jí)系統(tǒng)設(shè)置 -> 高級(jí) -> 環(huán)境變量中創(chuàng)建新的變量。變量名為 _NT_SYMBOL_PATH帮匾,值為 SRV*c:\符號(hào)文件路徑*http://msdl.microsoft.com/download/symbols

Windbg 下載符號(hào)文件失敗的解決方案

最近嘗試使用 windbg 解析 c++ 的 dump 后發(fā)現(xiàn)啄骇,無(wú)論如何都無(wú)法解析,提示找不到符號(hào)文件瘟斜。嘗試在命令行中輸入以下命令:

0:040> !sym noisy
0:040> .reload /f

執(zhí)行上面的命令后發(fā)現(xiàn)缸夹,網(wǎng)絡(luò)連接失敗了。 SYMSRV: HttpSendRequest: 800C2EFD - ERROR_INTERNET_CANNOT_CONNECT螺句。經(jīng)過(guò)百度后可以確認(rèn)虽惭,微軟的符號(hào)文件下載經(jīng)過(guò)了一次重定向,重定向的地址被長(zhǎng)城攔截掉了蛇尚。因此導(dǎo)致無(wú)法下載芽唇。

解決方案

  1. 配置代理

    該方案需要配置 http/https 代理。據(jù)悉取劫,socket5 代理無(wú)法下載符號(hào)文件匆笤。因?yàn)楣P者這邊需要下載符號(hào)文件提供給其他人使用,因此谱邪,筆者采用的是 python 代碼下載炮捧。

  2. 使用 python下載 pdb 文件

    • 配置命令行代理

      set http_proxy=http://127.0.0.1:1189
      set https_proxy=http://127.0.0.1:1189   
      
    • 安裝好 python3 運(yùn)行環(huán)境,在桌面新建 test 文件夾惦银,保存下面的代碼為 run.py咆课。

      #!/usr/bin/env python
      import requests
      from urllib.parse import urljoin
      import os
      import logging
      
      LOG_LEVEL = logging.DEBUG
      def download_file_by_curl(url, outdir, filename):
          newpath =  os.path.join('./downloads/',os.path.dirname(outdir))
          logging.info(newpath)
          os.system('mkdir -p %s;'%newpath)
          os.system('cd %s;curl -OL %s'%(newpath,url))
      def main():
          filename = "windbg.log"
          outdir = './downloads/'
           = 'https://msdl.microsoft.com/'
          with open(filename, 'r') as fp:
              content = fp.readlines()
              for rline in content:
                  line = rline.strip()
                 if line.startswith('SYMSRV:  HTTPGET:'):
                     m = line.split(': ')
                     url =urljoin(main_url, m[2])
                      pdb_name = m[2][len('/download/symbols/'):]
                      logging.info("{} {}".format(url, pdb_name))
                      download_file_by_curl(url, pdb_name, filename)
      if __name__ == '__main__':
          logging.basicConfig(format='%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s', level=LOG_LEVEL)
          main()
      
    • 打開(kāi) winddbg, 執(zhí)行以下代碼后灌砖,保存錯(cuò)誤的日志為 windbg.log

      0:040> !sym noisy
      0:040> .reload /f`          
      
    • 新建 downloads 文件夾

    • 在 cmd 中執(zhí)行 python3.exe run.py 后,等待結(jié)束傀蚌,符號(hào)文件就下載到 downloads 中了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末基显,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子善炫,更是在濱河造成了極大的恐慌撩幽,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箩艺,死亡現(xiàn)場(chǎng)離奇詭異窜醉,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)艺谆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門榨惰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人静汤,你說(shuō)我怎么就攤上這事琅催。” “怎么了虫给?”我有些...
    開(kāi)封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵藤抡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我抹估,道長(zhǎng)缠黍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任药蜻,我火速辦了婚禮瓷式,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘语泽。我一直安慰自己贸典,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布湿弦。 她就那樣靜靜地躺著瓤漏,像睡著了一般腾夯。 火紅的嫁衣襯著肌膚如雪颊埃。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天蝶俱,我揣著相機(jī)與錄音班利,去河邊找鬼。 笑死榨呆,一個(gè)胖子當(dāng)著我的面吹牛罗标,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼闯割,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼彻消!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宙拉,我...
    開(kāi)封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宾尚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后谢澈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體煌贴,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年锥忿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牛郑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敬鬓,死狀恐怖淹朋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钉答,我是刑警寧澤瑞你,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站希痴,受9級(jí)特大地震影響者甲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砌创,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一虏缸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嫩实,春花似錦刽辙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至晃洒,卻和暖如春慨灭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背球及。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工氧骤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吃引。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓筹陵,卻偏偏與公主長(zhǎng)得像刽锤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朦佩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容