2013-10-19 34 views
3

我想產生組件像在這個問題Using GCC to produce readable assembly?如何使objdump只顯示源代碼中出現的部分程序集?

進行簡單的測試代碼的答案:test.c的

void main(){ 
    int i; 
    for(i=0;i<10;i++){ 
    printf("%d\n",i); 
    } 
} 

GCC命令:gcc -g test.c -o test.o

objdump的命令:objdump -d -M intel -S test.o

但我得到的是以.init部分開頭的程序集 080482bc<_init>:並以.fini secti結尾在080484cc<_fini>

我不希望他們被顯示。

爲什麼會發生這種情況?以及如何避免顯示不在源文件中的部分?

+0

您可以使用grep(假設您正在使用Linux)來搜索您要查看的部分的反彙編,例如: 'objdump -D test.out | grep -A20 main .:' 這將只顯示主要部分的前20行。 – Janman

回答

5

現在你正在創建一個可執行文件而不是一個目標文件。可執行文件當然包含很多額外的部分。

如果要創建一個目標文件,請使用G34的-c標誌。

3

您可以使用-j選項指定部分。

因此objdump -d executable -j .text -j .plt只會顯示從.text和.plt部分反彙編。

相關問題