代码之家  ›  专栏  ›  技术社区  ›  SongpaGu

为什么程序在删除符号信息后工作?

  •  0
  • SongpaGu  · 技术社区  · 1 年前


    由于这一点,除了直接暴露在外部的函数之外,大多数函数的符号都不会出现(objdump-TC test.so)。

    我错过了什么?

    1 回复  |  直到 1 年前
        1
  •  5
  •   Jeremy Friesner    1 年前

    没错,程序本身执行时不需要调试符号;链接器计算(因此在链接时知道)每个函数/全局变量/etc在运行时的内存地址,因此它可以在必要时将该内存地址直接放入可执行文件中。

    这些符号供调试器使用,使调试输出更易于人类(或调试工具)使用和理解。