1. 程式人生 > >DUMPBIN命令使用詳解

DUMPBIN命令使用詳解

一、命令詳解

在使用VC時,可以用DUMPBIN。EXE來得到某個DLL中所輸出的符號的清單。如下面的

命令:dumpbin -exports Cmpnt1.dll
如:

C:/WINDOWS/system32>dumpbin -exports msgsvc.dll
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file msgsvc.dll
File Type: DLL

Section contains the following exports for msgsvc.dll
   0   characteristics
  41107F60   time date stamp Wed Aug 04 14:17:04 2004
   0.00   version
   1   ordinal base
   2   number of functions
   2   number of names
ordinal hint RVA name
   1   0 00004ABF ServiceMain
   2   1 00004595 SvchostPushServiceGlobals
Summary
   1000 .data
   1000 .reloc
   1000 .rsrc
   8000 .text

C:/>dumpbin
Microsoft (R) COFF Binary File Dumper Version 6.00.844
Copyright (C) Microsoft Corp 1992-1998. All rights res

usage: DUMPBIN [options] [files]
options:
   /ALL
   /ARCH
   /ARCHIVEMEMBERS
   /DEPENDENTS
   /DIRECTIVES
   /DISASM
   /EXPORTS
   /FPO
   /HEADERS
   /IMPORTS
   /LINENUMBERS
   /LINKERMEMBER[:{1|2}]
   /LOADCONFIG
   /OUT:filename
   /PDATA
   /RAWDATA[:{NONE|BYTES|SHORTS|LONGS}[,#]]
   /RELOCATIONS
   /SECTION:name
   /SUMMARY
   /SYMBOLS
若要執行 DUMPBIN,請使用下列語法:

DUMPBIN [options] files...


指定一個或多個二進位制檔案,以及控制資訊所需的任何選項。DUMPBIN 將該資訊顯示到標準輸出。可以將輸出重定向到檔案,或者使用 /OUT 選項為輸出指定檔名。

當在檔案上執行 DUMPBIN 但未指定選項時,DUMPBIN 顯示 /SUMMARY 輸出。

當鍵入命令 dumpbin 但沒有任何其他命令列輸入時,DUMPBIN 顯示彙總其選項的用法語句。

DUMPBIN 選項

/ALL
此選項顯示除程式碼反彙編外的所有可用資訊。使用 /DISASM 顯示反彙編。可以與 /ALL 一起使用 /RAWDATA:NONE 來省略檔案的原始二進位制詳細資料。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/ARCHIVEMEMBERS

此選項顯示有關庫成員物件的最少資訊。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/CLRHEADER file
此處: 

file 
用 /clr 生成的影象檔案。 
備註
CLRHEADER 顯示有關在任何託管程式中使用的 .NET 頭的資訊。輸出顯示 .NET 頭及其中各節的位置和大小(以位元組計)。

File Format Spec.doc 描述 .NET 頭中的資訊。NET SDK 將 File Format Spec.doc 安裝在 Tools Developers Guide 目錄中。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/DIRECTIVES

此選項轉儲影象中由編譯器生成的 .directive 節。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/DEPENDENTS
轉儲影象從中匯入函式的 DLL 的名稱。不要轉儲匯入函式名。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/DISASM
此選項顯示程式碼段的反彙編,如果出現在檔案中則使用符號。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/EXPORTS
此選項顯示從可執行檔案或 DLL 匯出的所有定義。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/FPO
此選項顯示框架指標優化 (FPO) 記錄。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/HEADERS
此選項顯示檔案頭和每節的頭。當用於庫時,顯示每個成員物件的頭。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/IMPORTS[:file]
此選項顯示匯入到可執行檔案或 DLL 的 DLL 列表(靜態連結的和延遲載入)和上述每個 DLL 的各個匯入。

可選 file 規範允許指定僅顯示某個 DLL 的匯入。例如:

dumpbin /IMPORTS:msvcrt.dll
此選項顯示的輸出與 /EXPORTS 輸出相似。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/LINENUMBERS
此選項顯示 COFF 行號。如果物件檔案是用程式資料庫 (/Zi)、C7 相容 (/Z7) 或僅限行號 (/Zd) 編譯的,則它包含行號。如果可執行檔案或 DLL 是與生成除錯資訊 (/DEBUG) 連結的,則它包含 COFF 行號。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/LINKERMEMBER[:{1|2}]
此選項顯示庫中定義的公共符號。指定引數 1 將按物件順序顯示符號及其偏移量。指定引數 2 將顯示物件的偏移量和索引號,然後按字母順序列出這些符號及每個符號的物件索引。若要兩個輸出都獲得,指定不帶數字引數的 /LINKERMEMBER。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/LOADCONFIG
此選項轉儲 IMAGE_LOAD_CONFIG_DIRECTORY 結構,此結構是由 Windows NT 載入程式使用並在 WINNT.H 中定義的可選結構。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/OUT:filename
此選項指定輸出的 filename。預設情況下,DUMPBIN 將資訊顯示到標準輸出。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/PDBPATH[:VERBOSE] filename
此處: 

filename 
要為其查詢匹配 .pdb 檔案的 .dll 或 .exe 檔名。 
VERBOSE(可選) 
報告曾嘗試在其中定位 .pdb 檔案的所有目錄。 
備註
/PDBPATH 將沿偵錯程式搜尋 .pdb 檔案的同一路徑搜尋計算機,並將報告哪些 .pdb 檔案(若有)和 filename 中指定的檔案相對應。

使用 Visual Studio 偵錯程式時可能會遇到問題,這是因為偵錯程式對除錯檔案的不同版本使用 .pdb 檔案。

/PDBPATH 將沿下列路徑搜尋 .pdb 檔案: 

檢查可執行檔案駐留的位置。 
檢查寫入可執行檔案的 PDB 的位置。這通常是影象被連結時的位置。 
沿 Visual Studio IDE 中配置的搜尋路徑檢查。 
沿 _NT_SYMBOL_PATH 和 _NT_ALT_SYMBOL_PATH 環境變數中的路徑檢查。 
在 Windows 目錄中檢查。 
/PDATA
僅用於 RISC 處理器。

此選項從影象或物件轉儲異常表 (.pdata)。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/RAWDATA[:{1|2|4|8|NONE[,number]]此選項顯示檔案中每節的原始內容。引數控制顯示格式,如下所示:

引數 結果 
1 預設值。內容以十六進位制位元組顯示,如果內容具有列印的表示形式,則還顯示為 ASCII 字元。 
2 內容顯示為十六進位制的 2 位元組值。 
4 內容顯示為十六進位制的 4 位元組值。 
8 內容顯示為十六進位制的 8 位元組值。 
NONE 取消顯示原始資料。此引數對控制 /ALL 輸出很有用。 
Number 顯示的行被設定為每行具有 number 個值的寬度。 

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/RELOCATIONS
此選項顯示物件或影象中的任何重定位。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/SECTION:section
此選項限制與指定的 section 有關的資訊的輸出。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/SUMMARY
此選項顯示有關節的最少資訊(包括總大小)。如果未指定其他選項,則此選項為預設值。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/SYMBOLS
此選項顯示 COFF 符號表。符號表存在於所有物件檔案中。而對於影象檔案,只有當它是與 /DEBUG 連結的時,它才包含 COFF 符號表。

下面是關於 /SYMBOLS 輸出的說明。通過查閱 winnt.h(IMAGE_SYMBOL 和 IMAGE_AUX_SYMBOL)或 COFF 文件,可找到有關 /SYMBOLS 輸出含義的附加資訊。

假設有下列示例轉儲:

Dump of file main.obj
File Type: COFF OBJECT

COFF SYMBOL TABLE
000 00000000 DEBUG notype Filename | .file
main.cpp
002 000B1FDB ABS notype Static | @comp.id
003 00000000 SECT1 notype Static | .drectve
Section length 26, #relocs 0, #linenums 0, checksum 722C964F
005 00000000 SECT2 notype Static | .text
Section length 23, #relocs 1, #linenums 0, checksum 459FF65F, selection 1 (pick no duplicates)
007 00000000 SECT2 notype () External | _main
008 00000000 UNDEF notype () External | [email protected]@YAXXZ (void __cdecl MyDump(void))

String Table Size = 0x10 bytes

Summary

26 .drectve
23 .text
對於以符號號碼開頭的行,下列說明描述了含有與使用者相關的資訊的列: 

開頭的 3 位數字是符號索引/號碼。 
如果第三列包含 SECTx,則符號在物件檔案的那一節中定義。但如果出現 UNDEF,則它不在那個物件中定義並且必須在其他地方被解析。 
第五列 (Static, External) 說明符號是否只在那個物件的內部可見,或者是否是公共的(外部可見)。靜態符號 _sym 不會連結到公共符號 _sym;這些符號是名為 _sym 的函式的兩種不同例項。 
編號行中的最後一列是符號名(修飾名和未修飾名)。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。

/UNWINDINFO 
在程式影象(例如 exe 和 dll)中轉儲結構化異常處理 (SEH) 表的展開描述符。/UNWINDINFO 僅適用於 IA64 影象。

只有 /HEADERS DUMPBIN 選項可用於由 /GL 編譯器選項產生的檔案。 

二、例子

在“執行”-〉“cmd”中輸入 E:/Program Files/Microsoft Visual Studio/VC98/Bin/dumpbin.exe 
/exports F:/COM技術/COM程式設計入門/COMIntro2_src/SimpleComSvr/src/MsgBoxSvr/Debug/MsgBoxSvr.dll 
/out:F:/COM技術/COM程式設計入門/COMIntro2_src/SimpleComSvr/src/MsgBoxSvr/Debug/MsgBoxSvr.txt

 作用:檢視MsgBoxSvr.dll, 將資訊儲存到文字檔案MsgBoxSvr.txt中

相關推薦

no