2010-06-10 71 views
3

我正在創建一個調試器工具。 我需要GCC編譯器的MAP文件結構說明。 爲了找到如何爲不同數據類型(類,內部類,靜態,靜態常量,外部,模板,MAP文件中的typedef變量規範)的不同變量映射內存。 而且我想知道如何將符號添加到不同的變量以區分MAP文件。 告訴我要繼續的方法。地圖文件規範?

+0

刪除了C#標記 - 不知道爲什麼那裏有... – 2010-06-10 09:34:32

+0

請勿在問題標題中使用所有大寫。 – 2010-06-10 09:34:33

回答

0

不要認爲您需要了解詳細的MAP文件格式,-Wl和--print-map應該足以從編譯器中獲取可讀的文本地圖數據。

$ cat x.c | grep alpha 
int alpha = one; 
    int c = do_operation(alpha, b); 
    printf("%d op %d = %d\n", alpha, b, c); 

$ g++ -Wl,--print-map ./x.c | grep -P "(alpha|printf)" 
       0x00000000080483f0    [email protected]@GLIBC_2.0 
       0x000000000804a018    alpha 

上面你可以看到x.c包含變量「alpha」的聲明並且還使用了「printf」。正如你可以看到,地址可通過--print-map paramater

希望這會有所幫助。

+0

順便說一句,如果你想知道如何閱讀由--print-map生成的文本,這裏是文檔,請記住閱讀ld文檔,這不是光讀:http://sourceware.org/binutils/docs- 2.19/LD/Options.html#索引g_t_002d_002dprint_002dmap-62 – chkdsk 2011-03-10 23:04:57