【问题标题】:Which function in glibc calls the main functionglibc中哪个函数调用主函数
【发布时间】:2012-05-25 10:49:13
【问题描述】:

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

【问题讨论】:

标签: c linux gcc glibc


【解决方案1】:

根据 valgrind 自己的帮助,您会找到选项 --show-below-main 的以下解释:

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

因此,below main并不是调用main本身的函数,而是__libc_start_main

【讨论】:

    猜你喜欢
    • 2015-12-21
    • 2010-12-19
    • 2014-10-02
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多