我需要查找几个 C 函数的确切字节大小。任何能够分析由 gcc 编译器生成的 .obj 文件的实用程序的任何推荐?
问问题
3018 次
1 回答
5
我这里只有一个 GCC v4 用于测试,但我认为 binutils 的这个特殊功能最近没有改变。
测试.c:
int foo()
{
return 42;
}
编译:
$ gcc -c test.c -o test.o
拆解:
$ objdump -D test.o
...
0000000000000000 <foo>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: b8 2a 00 00 00 mov $0x2a,%eax
9: c9 leaveq
a: c3 retq
...
(我们看到foo
位于地址 0,大小为 0x000b 字节。)
证据在布丁中:
$ nm -S test.o
0000000000000000 000000000000000b T foo
在地址 0,大小为 0x000b。你在这。;-)
但是,请小心处理这些数字。这是函数的大小,但可能需要更多(例如全局数据对象)才能使函数正确运行。
于 2011-02-25T07:23:57.823 回答