国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

概述.net開發過程中Bin目錄下面幾種文件格式

2024-07-10 12:49:31
字體:
來源:轉載
供稿:網友

在.NET開發中,我們經常會在bin目錄下面看到這些類型的文件:

.pdb、.xsd、.vshost.exe、.exe、.exe.config、.vshost.exe.config

項目發布的時候,往往搞不清楚哪些是需要的,那些是不需要的。那么這些格式的文件到底是干什么用的呢?

pdb

.pdb文件,是VS生成的用于調試的符號文件(program database),保存著調試的信息。在VS的工程屬性,C/C++,調試信息格式,設置/Zi,那么VS就會在構建項目時創建PDB文件。

在這里要區分兩種情況:

1、構建靜態庫時,可以在工程屬性 –> C/C++ –> 輸出文件 –> 程序數據庫名 設置生成的pdb文件名稱,如果不指定,默認是生成為VCx0.pdb,這里x是VS版本號,例如用VS2005,就會生成VC80.pdb。這里就會產 生一個疑問,編譯靜態庫時默認生成的.pdb文件名字都一樣,那引用這個靜態庫的項目最后能找到正確的.pdb文件嗎?答案是肯定的,因為VS會在生成的 文件中嵌入 .pdb 文件的路徑。

舉個例子,在Project/ToolA下,構建了一個靜態庫ToolA.lib,對應生成一個vc80.pdb,同樣在在Project /ToolB下,構建了一個靜態庫ToolB.lib,對應生成一個vc80.pdb。然后最終的工程Work.exe同時鏈接了這兩個靜態庫.這時,生 成Work.pdb的時候,就會在ToolA.lib中找到它對應的符號文件路徑Project/ToolA/vc80.pdb,以及ToolB.lib 對應的符號文件路徑Project/ToolB/vc80.pdb,合并生成最終工程的Work.pdb。

2、構建可執行文件或動態庫,這種情況下,編譯器會生成一個.pdb文件,鏈接器會生成一個.pdb文件,編譯器生成的pdb文件可以在在工程屬 性 –> C/C++ –> 輸出文件 –> 程序數據庫名 設置,鏈接器生成的.pdb文件可以在工程屬性 –> 鏈接器 –> 調試 –> 生成調試信息(設置Yes),生成程序數據庫名設 置。

這兩個pdb文件有什么不一樣呢?編譯器生成的pdb文件,默認也是用vcx0命名,是編譯器在編譯過程中,把每個.obj文件對應的符號信息存儲在其中的,但不包括函數定義。而鏈接器生成的.pdb文件,默認使用工程名命名,是鏈接器在鏈接工程時,根據編譯器生成的vcx0.pdb再進一步加工出 來的,具有完整信息的符號文件。就像鏈接器根據各個.obj文件生成exe或dll一樣,編譯器生成的.pdb文件是編譯-鏈接過程的中間產物,最后用于 調試程序的是鏈接器生成的ProjectName.pdb.

上面說的是pdb文件生成規則。在使用的時候,調時期會取到文件對應的pdb文件路徑,然后去那個路徑(絕對路徑)下找,如果這個exe或者dll 是自己編的,那無論它放在哪里,pdb文件只要不動,調試器都能找到它。如果調試器在那個路徑下找不到,就會到exe或者dll的同級目錄找。例如這個工 程是別人編出來的,連同符號文件一起發過來,我們只要把符號文件與exe或者dll放在同級目錄,調試器也能找到它。當然,在調試器中也可以自己指定符號 文件路徑

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 寿阳县| 蕲春县| 阳谷县| 沭阳县| 清水县| 普安县| 和静县| 太和县| 扎囊县| 阿城市| 新泰市| 利川市| 项城市| 汝南县| 建昌县| 乌拉特前旗| 滨海县| 牟定县| 常州市| 玉田县| 黄骅市| 潼关县| 百色市| 卓资县| 贵州省| 五常市| 偃师市| 呼图壁县| 新邵县| 千阳县| 高平市| 蛟河市| 聂拉木县| 葫芦岛市| 建阳市| 木兰县| 临高县| 昌平区| 连江县| 察隅县| 阿鲁科尔沁旗|