用VS2010生成的.obj文件、.lib庫、.dll庫、.exe執行文件,如果想查看其中這些文件或庫包含了哪些函數以及相關的信息(符號清單),可以通過VS2010自帶的dumpbin工具來完成。
dumpbin.exe為Microsoft COFF二進制文件轉換器,它顯示有關通用對象文件格式(COFF)二進制文件的信息。可用使用dumpbin檢查COFF對象文件、標准COFF對象庫、可執行文件和動態鏈接庫等。
dumpbin工具只能在命令行下使用。
雙擊C:\Program Files (x86)\Microsoft Visual Studio10.0\VC\bin\amd64 目錄下的dumpbin.exe即可查看相關信息,如圖1:
圖 1
在C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin目錄下也存在dumpbin.exe,打開方法:先啟動cmd,然后定位到C:\ProgramFiles (x86)\Microsoft Visual Studio 10.0\VC\bin,運行vcvars32.bat(或者直接將vcvars32.bat拖到cmd中),最后再運行dumpbin.exe即可。
dumpbin使用方式:dumpbin 選項 文件名
其中多個選項間用空格分開,多個文件名間也用空格分開,文件名可以為后綴為.obj、.lib、.dll、.exe,如 dumpbin /ALL/RAWDATA:NONE /OUT:1.txt text.obj (dmpbin /ALL /RAWDATA:NONE test.obj >1.txt)。如果沒有給dumpbin指定任何選項,它將等同於使用了/SUMMARY參數。如果沒有指定任何輸入文件,它將列出所有的選項。
選項說明:參數的使用可以用”-”或者”/”(如-ALL等於/ALL)后面跟選項名。有些選項可以在選項名后接”:”。使用空格或制表符(Tab)分割命令選項。選項名,關鍵字和文件名是不區分大小寫的。大多數的參數可以應用於所有的二進制文件,有少部分參數只能用於特定的文件。
(1)、/ALL :此選項顯示除代碼反匯編外的所有可用信息。使用/DISASM顯示反匯編。可以與/ALL一起使用/RAWDATA:NONE來省略文件的原始二進制詳細資料。
(2)、/ARCHIVEMEMBERS:此選項顯示有關庫成員對象的最少信息。 (3)、/CLRHEADER file:其中file為用/clr生成的圖像文件。CLRHEADER顯示有關在任何托管程序中使用的.net頭的信息。輸出顯示.net頭及其中各節的位置和大小(以字節計算)。
(3)、/DIRECTIVES:此選項轉儲圖像中由編譯器生成的.directive節。
(4)、/DEPENDENTS:轉儲圖像從中導入函數的DLL的名稱。不要轉儲導入函數名。
(5)、/DISASM:此選項顯示代碼段的反匯編,如果出現在文件中則使用符號。
(6)、/EXPORTS:此選項顯示從可執行文件或DLL導出的所有定義。
(7)、/FPO:此選項顯示框架指針優化(FPO)記錄。
(8)、/HEADERS:此選項顯示文件頭和每節的頭。當用於庫時,顯示每個成員對象的頭。
(9)、/IMPORTS[:file]:此選項顯示導入到可執行文件或DLL的DLL列表(靜態鏈接的和延遲加載)和上述每個DLL的各個導入。可選file規范允許指定僅顯示某個DLL的導入。
(10)、/LINENUMBERS:此選項顯示COFF行號。如果對象文件是用程序數據庫(/Zi)、C7兼容(/Z7)或僅限行號(/Zd)編譯的,則它包含行號。如果可執行文件或DLL是與生成調試信息(/DEBUG)鏈接的,則它包含COFF行號。
(11)、/LINKERMEMBER[:{1|2}]:此選項顯示庫中定義的公共符號。指定參數1將按對象順序顯示符號及其偏移量。指定參數2將顯示對象的偏移量和索引號,然后按字母順序列車這些符號及每個符號的對象索引。若要兩個輸出都獲得,指定不帶數字參數的/LINKERMEMBER。
(12)、/LOADCOMFIG:此選項轉儲IMAGE_LOAD_CONFIG_DIRECTORY結構,此結構是由WindowsNT加載程序使用並在WIINNT.H中定義的可選結構。
(13)、/OUT:filename:此選項指定輸出的filename。默認情況下,DUMPBIN將信息顯示到標准輸出。
(14)、/PDBPATH[:VERBOSE]filename:filename為要為其查找匹配.pdb文件的.dll或.exe文件名。VERBOSE(可選)為報告曾嘗試在其中定位.pdb文件的所有目錄。/PDBPATH將沿調試器搜索.pdb文件的同一路徑搜索計算機,並將報告那些.pdb文件(若有)和filename中指定的文件相對應。
(15)、/RAWDATA[:{1|2|4|8|NONE}[,number]]:此選項顯示文件中每節的原始內容。參數說明:1,默認值,內容以十六進制字節顯示,如果內容具有打印的表示形式,則還顯示為ASCII字符;2,內容顯示為十六進制的2字節值;4,內容顯示為十六進制的惡4字節值;8,內容顯示為十六進制的8字節值;NONE,取消顯示原始數據,此參數對控制/ALL輸出很有用;number,顯示的行被設置為每行具有number個值的寬度。
(16)、/RELOCATIONS:此選項顯示對象或圖像中的任何重定位。
(17)、/SECTION:section:此選項限制與指定的section有關的信息的輸出。
(18)、/SUMMARY:此選項顯示有關節的最少信息(包括總大小)。如果未指定其它選項,則此選項為默認值。
(19)、/SYMBOLS:此選項顯示COFF符號表。符號表存在於所有對象文件中。而對於圖像文件,只有當它是與/DEBUG鏈接時,它才包含COFF符號表。
(20)、/UNWINDINFO:在程序圖像(例如exe和dll)中轉儲結構化異常處理(SHE)表的展開描述符。/UNWINDINFO僅適用於IA64圖像。
以上所有只有/HEADERS DUMPBIN選項可用於由/GL編譯器選項產生的文件。
如果查看a.dll庫中包含哪些函數,可以使用:dumpbin /exports a.dll >1.txt
如果查看b.exe中加載了哪些動態庫,可以使用:dumpbin /imports b.exe >2.txt
如果查看c.lib中包含哪些函數,可以使用:dumpbin /all /rawdata:none c.lib >3.txt
如果查看d.obj中包含哪些函數,可以使用:dumpbin /all /rawdata:none d.obj >4.txt