2010-11-23 45 views

回答

4

A '符號' 是一個符號標識符包括函數名和變量名。

編譯器/鏈接器在構建過程中創建一個符號表,調試器使用它來爲這些實體提供源級符號名稱,而不是普通地址(因此可能會出現名稱「符號調試器」對面)。

+0

感謝克利福德 - 這清除了一切! – 2010-11-23 16:40:45

3

他們在代碼的symbol table項,編譯時生成的。變量,函數等

+0

啊,我忘了維基百科吧 - 謝謝你的回答! – 2010-11-23 16:40:26

3

符號是變量,函數,類的人名...沒有符號,你會看到一切都只是數據在地址。
例如:
用符號:

call printf 

無符號

call dword ptr 0x804480 
+0

感謝彙編程序的輸出。 – 2010-11-23 16:41:09

0

調試符號(可能是因爲「STABS」,例如將它們存儲在符號表中而被如此命名)也指除鏈接器所需的以外的數據,例如行號/地址映射,類型信息,局部變量,並且不要忘記「靜態」符號(鏈接器顯然不需要這些符號,但這對調試顯然非常重要)。

當然,PE圖像不需要(或通常擁有)「符號表」就這樣 - 只是導入/導出表。因此,在Windows環境下,「符號」和「調試符號」往往可以互換使用,以指代鏈接後遺留的任何符號;用MS的工具鏈這些(幾乎?)總是進入「pdb」文件。 (見。)

相關問題