精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

LLVM構(gòu)建了PDB文檔,并提供了PDB與YAML的轉(zhuǎn)換工具

責(zé)任編輯:editor004

作者:Jonathan Allen

2017-08-24 11:30:28

摘自:INFOQ

要使用上Windows平臺(tái)提供的豐富工具,需要LLVM等編譯器編寫者可以生成PDB格式的文件。由于PDF文件中包含了各種類型的記錄

要使用上Windows平臺(tái)提供的豐富工具,需要LLVM等編譯器編寫者可以生成PDB格式的文件。PDB,即程序調(diào)試數(shù)據(jù)庫(kù)(Program Debug Database),是一種字符數(shù)據(jù)庫(kù),它描述了Windows平臺(tái)上編譯的代碼。由于PDF文件中包含了各種類型的記錄,因此它使得調(diào)試器等工具可以實(shí)現(xiàn)被編譯代碼和源代碼間的映射。

出于提高性能的考慮,PDB中的記錄數(shù)據(jù)是高度索引的。問(wèn)題也正部分源于此,LLVM的Windows團(tuán)隊(duì)成員Zach Turner給出了如下介紹:

CodeView是Microsoft在上世紀(jì)八十年代創(chuàng)立的一種調(diào)試信息格式。但是出于種種原因,其它的調(diào)試器另外開發(fā)了一種稱為DWARF的獨(dú)立格式。DWARF格式最終成為了標(biāo)準(zhǔn),當(dāng)前得到了很多編譯器和編程語(yǔ)言的支持。類似于DWARD,CodeView定義了一系列記錄,描述了源代碼行和代碼地址間的映射,以及程序所使用的類型和符號(hào)。調(diào)試器進(jìn)而使用這些信息,讓用戶可以實(shí)現(xiàn)通過(guò)函數(shù)名設(shè)置斷點(diǎn)、顯示變量的值等調(diào)試功能。但是CodeView的文檔并不完整,而且最新的官方文檔也是20年前的。盡管一些記錄的格式并未發(fā)生變化,但是其它不少記錄的格式已經(jīng)進(jìn)化了,并引入了全新記錄。這些記錄的文檔并不存在。

[……]

(PDB中)包括了CodeView,此外還包括了很多其它的內(nèi)容,以允許使用各種方式索引CodeView記錄。這使得PDB可以支持通過(guò)名字和地址對(duì)類型和符號(hào)的快速查找、對(duì)于單個(gè)輸入文件建立類似于“數(shù)據(jù)表”的功能,以及其它多種功能,這些功能雖然對(duì)用戶是不可見的,但是它們?cè)诤艽蟪潭壬蠈?shí)現(xiàn)了Windows上所提供的無(wú)與倫比的調(diào)試體驗(yàn)。

Microsoft提供了一些操作PDB文件的工具和SDK,但是并未提供任何可以生成PDB文件的工具。即便是這些工具,也需要使用一些專用庫(kù),因?yàn)殚_源PDB代碼甚至從未得以編譯。

根據(jù)由Microsoft上傳的部分代碼,LLVM團(tuán)隊(duì)構(gòu)建了自己的PDB生成器。雖然該生成器依然被認(rèn)為是處于“試用版的質(zhì)量”,但是它支持應(yīng)用使用CLANG和LLVM后端編譯,可以開始與Windows工具合作工作。Turner繼續(xù)指出:

我們希望用戶能嘗試使用該工具,并在我們的軟件缺陷跟蹤網(wǎng)站上報(bào)告問(wèn)題。但是開始時(shí),你需要下載用于Windows平臺(tái)Clang的最新快照。

作為L(zhǎng)LVM團(tuán)隊(duì)支持PDB格式的探索性工作的一部分,LLVM構(gòu)建了PDB格式的文檔。雖然這些文檔并非十分完善,但是對(duì)于查看這一從前并不可用的復(fù)雜格式,上述文檔提供了一個(gè)重要的窗口。

作為文檔的輔助工具,LLVM團(tuán)隊(duì)還構(gòu)建了一個(gè)稱為llvm-pdbutil的工具。該工具的功能之一就是支持在YAML和PDB間的雙向轉(zhuǎn)換。(在此對(duì)不了解YAML的讀者做一個(gè)簡(jiǎn)介。YAML是一種人們可閱讀的格式,它使用的是空格而非大括號(hào)。YAML可能是在API文檔語(yǔ)言RAML所用的格式中最廣為人知的。)

需指出的是,現(xiàn)實(shí)中存在著兩種PDB格式。除了我們上面介紹的PDB完整版,還有一種稱為Portable PDB的格式,該格式針對(duì).NET Core應(yīng)用。為方便閱讀,Portable PDB的文檔使用了開源庫(kù)。

查看英文原文: LLVM has Documented the PDB Format, Complete with PDB to YAML Conversion

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 平安县| 东乌珠穆沁旗| 通海县| 通许县| 锡林郭勒盟| 固安县| 嘉善县| 荣成市| 湖口县| 临海市| 根河市| 桃园县| 都江堰市| 电白县| 辽阳县| 文安县| 祁东县| 黄浦区| 光泽县| 长武县| 宣化县| 安义县| 慈利县| 东兰县| 陆良县| 托里县| 旌德县| 开原市| 武宁县| 张家口市| 乌拉特中旗| 德州市| 高碑店市| 通渭县| 丰顺县| 延边| 乌兰察布市| 白河县| 芜湖县| 通山县| 炉霍县|