glibc中的哪个函数调用main函数

时间:2012-05-17 20:14:28

标签: c linux gcc glibc

我试图了解Linux如何启动程序。我在某处读到glibc中的某些函数调用main函数。使用callgrind进行分析并查看Kcachegrind中的调用图,我看到below main调用main。但是我不明白这个,一个函数不能这样命名。所以我的问题是glibc中的哪个函数实际上启动了主函数。

1 个答案:

答案 0 :(得分:11)

按照valgrind自己的帮助,你会找到选项 - show-below-main 的解释:

  

默认情况下,错误的堆栈跟踪不显示任何功能   出现在主要之下,因为大部分时间它都是无趣的   图书馆的东西和/或gobbledygook。或者,如果不是主要的话   在堆栈跟踪中,堆栈跟踪不会显示任何功能   下面的主要功能,如glibc的__libc_start_main。   此外,如果跟踪中存在类似主函数,则它们是   归一化为(低于主要),以使输出更多   确定性的。

因此,主要下面的不是调用main本身的函数,而是 __ libc_start_main