【发布时间】:2022-01-02 18:43:13
【问题描述】:
假设我有以下程序 (a.c):
#include <stdio.h>
void f()
{
printf("Hello, world!");
}
int main(void)
{
f();
return 0;
}
$ gcc -g a.c
拥有a.out,我如何找出main() 的定义位置?我的意思是,在一个大型项目中,main() 的来源并不总是很清楚。
【问题讨论】:
-
既然你使用了像“nm”和“objdump”这样的标签,我想你已经知道你的问题的答案了吗?
-
in a big project it's not always clear where main() comes fromgrep -R main -
@anatolyg 我知道他们可以给出答案,但我不知道如何解释他们的输出。
-
@KamilCuk 让我show你。
-
?然后
grep -R main | grep -v configure | grep -v aclocal或使用--include=*.c选项。还有grep -R 'int[[:space:]]*main[[:space:]]*\('或类似的。我猜主要在这里github.com/freedesktop/xorg-xserver/blob/…。还有 ctags、cscope、clangd 和类似的工具。
标签: c objdump dwarf nm readelf