2010-09-12 33 views

回答

2

呃,沒有。可執行文件包含機器代碼。全局變量的初始值。在Windows上,調試信息通常存儲在單獨的文件.pdb中。該文件中關於程序中的函數或變量的調試數據稱爲符號。

dbghelp API是described here

10

一個很高層次的解釋如下:

首先符號不在C++世界裏。當使用某些指定的設置進行構建時,它們存在於幾種高級語言(如C,C++等)的二進制文件中。我們來定義

'int i = 2;'

在二進制中,'i'只是一個內存位置(例如0x10203040),它正在用2初始化。沒有稱爲'i'的內存位置。通過調試符號將名稱'i'分配給該內存位置,該符號使用二進制文件加載(使用某些標記構建時),該文件將「內存位置」映射保留到「源級別名稱」。

作爲示例,PE file format提供了用於存儲調試符號信息的調試目錄。這些在調試時非常有用,因爲在沒有這樣的調試符號的情況下,僅根據binray 0和1進行調試將是一個非常非常具有挑戰性的任務。因此,當您調試使用調試標誌構建的這樣的二進制文件(其具有'i'的上述定義)時,調試器通過PE中的調試目錄知道存儲器位置'0x10203040'對應於'i'文件。

+0

調試符號既可以存儲在PE的Debug目錄中,也可以存儲在單獨的pdb文件中,對嗎? – COMer 2010-09-12 13:53:05

相關問題