1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          pdb文件(什么是pdb文件)

          來源:互聯網轉載 時間:2024-05-07 03:22:55

          pdb是指程序數據庫文件,存儲程序的所有調試信息數據。pdb文件主要會存儲對應模塊(dll或者exe)內部的所有符號,以及符號對應的地址、文件名和行號;會在我們調試的時候被使用到,這個東西可以理解為調試的時候應用程序和源文件之間的一個橋梁。

          PDB(Program DataBase),全稱為“程序數據庫”文件。相信使用過VS的人對于這個拓展名的文件不會陌生,這個文件主要會存儲對應模塊(dll或者exe)內部的所有符號,以及符號對應的地址、文件名和行號。

          這個文件會在我們調試的時候被使用到,這個東西可以理解為調試的時候應用程序和源文件之間的一個橋梁。正是歸功于這個文件,我們才能在debug的時候看到程序當前執行相對應的代碼和監視到一些變量。

          PDB文件什么時候產生?

          PDB文件是在我們編譯工程的時候產生的,它是和對應的模塊(exe或dll)一起生成出來的。我們一般可能不會意識到PDB文件的重要性,因為如果只是我們本地進行開發,我們總是能夠進行調適。這里我要引入兩個概念:Private Build和Public Build1。Private Build指的是在開發機器上的編譯,Public Build指的是在負責編譯的機器上的編譯。

          正如上面我所說Private Build一般不會有問題,因為在編譯出來的機器上進行調試所有必要的文件都在該在的地方。所有大部分不能調試的問題都發生在Public Build的情況下。

          如果你的應用程序需要發布或者當作產品賣得,你就需要特別注意要保存你發布出去的那個版本的PDB文件和源文件。注意:你只有一次機會保存著發布出去的PDB文件,如果你弄丟了將無法找回。2(原因下面說明)<當然使用Reflector 類似的工具去調試也是可以的>

          為什么PDB這么重要?

          也許你會認為如果拿一份一模一樣的源代碼重新編譯一個PDB文件,然后用來調試就行了。我也曾經這么認為過,直到有一天…......

          直接的原因是因為VS生成出來的二進制文件的Header部分里面包含了它對應的PDB的GUID,PDB也包含一個GUIID,這兩個GUID實在編譯的時候添加進去的。VS調試器在載入PDB的時候會去比對這個兩個GUID,如果不一致,那么就不能使用。

          當然上面那個原因只是一個表面現象,根本原因是既是兩份一模一樣的代碼編譯器編譯出來的文件可能是不一樣的。因為編譯器在編譯的時候會對代碼進行優化,而同一份代碼可能會有很多種優化的方法,它會根據當時的具體機器的環境等情況選擇一個最快的生成方法。所以它生成出來的文件有可能是不一樣的!所以如果連生成出來的文件都不一樣,那么原來的那個PDB里面的符號對應的地址也就沒有意義了。

          如何查看二進制文件和PDB的GUID?

          使用VS自帶的DUMPBIN工具可以查看二進制文件所期望的PDB的GUID?;居梅ň褪荄UMPBIN /HEADER 文件,具體用可可參考MSDN(http://msdn.microsoft.com/zh-cn/library/c1h33y6c(v=vs.80).aspx)。

          查看PDB的GUID可以用下面這個工具,直接將PDB拉進去即可。

          http://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P

          PDB文件的查找策略

          先上試驗結果,可以再調試的時候從Visual Studio 的Module串口中查找到一個module的symbol的查找策略。從截圖中我們可以看到結果如下:

          1. 文件被執行或者被載入的地址

          2. 就是硬編碼在PE文件頭中的那個地址。大家可以看到obj\<config>才是最原始生成的地址,只是之后被拷貝到了第一個地址中去了。

          2.5 如果配置了符號服務器,第二步以后應該先去符號服務器的緩存目錄下找,如果找不到再去符號服務器上去找。找到的話就會下載到緩存目錄。

          3. 第三部分是我VS中設置的一些符號查詢的目錄,因為我裝過Reflector所以默認加了這幾個目錄在我的設置中。

          4. Windows文件夾。

          這里有一個比較有意思的現象就是,VS的查找策略都是會先找一個目錄下的symbol\exe\project.pdb,然后exe\project.pdb,最后才找project.pdb。這個順序有點出人意料。

          PDB文件會影響性能么?

          可能有些人會覺得PDB文件的生成會對最終的應用程序的性能產生一定的影響,所以覺得在發布版中不應該生成PDB文件。

          錯!對于.NET應用程序來說,生成PDB文件不會影響編譯器的優化,所以也完全不會影響應用的性能。只會對于生成的程序集中的一個DebuggableAttribute的屬性產生影響。有興趣的人可以閱讀Do PDB Files Affect Performance?

          以上就是什么是pdb文件,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注本站行業資訊頻道。

          標簽:pdb文件-

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          什么是人民幣離岸市場?人民幣離岸市場就是在中國大陸以外的國家及地區經營的人民幣交易市場。離岸貨幣的特性就是在發行國以外的國家及地區進行存放和交易,這個過程是不會受到貨幣發行國的金融法令管制的。而且離岸市場所在國及地區也基本不會約束別國貨幣在本土的經營,因此離岸貨幣被稱為自由貨幣。人民幣離岸市場有哪些三大離岸市場就目前來說,主要的人民幣離岸市場有香港人民帀離岸市場、新加坡人民幣離岸市場、倫敦人民幣離...

          (資料圖片)最近這段時間總有小伙伴問小編區域中找不到無線網絡怎么辦是什么,小編為此在網上搜尋了一些有關于區域中找不到無線網絡怎么辦的知識送給大家,希望能解答各位小伙伴的疑惑。解決方法有以下兩種:1、系統日志服務被禁用,可能會導致無線網卡顯示,區域中找不到無線網絡的故障,打開360衛士進入主界面,在下方的功能項選擇里可以看到優化加速選項,點擊進入,然后在優化加速界面下方找到啟動項選項,點擊進入系統啟...

          一般企業流動比率多少合適?流動比率一般在1.5~2.0之間比較好,流動比率越高這就說明日常經營越不需要短期資金的支持,但比率過高表明資金利用效率越低。在實際計算中,流動比率的計算公式為流動比率 = 流動資產/ 流動負債,也就是說流動資產的變化和流動負債的變化都會對流動比率的大小造成影響。1、流動比率用來衡量企業流動資產在短期債務到期以前,可以變為現金用于償還負債的能力。雖然流動比率越高,企業資產的...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>