在 C/Linux 中没有磁盘 I/O 的 linux 上自己的进程读取 debug/static 符号?

read debug/static symbols when on own process on linux without disk I/O in C/Linux?

当我们假设整个程序(以及所有相关的 .so 文件)已被删除时,是否可以使用一些 API 通过它的地址读取自己的符号名称?

我找到了一些如何使用 objdumpreadelfnm 等获取此信息的文章,但不是一个选项。

我想要的是一个函数 string get_symbol_at(uint64_t addr)

ELF 文件中的 static/debug 符号以 DWARF 格式编码。可以通过分析调试信息发现它们。然而,所有 .debug_* 部分似乎只是 未加载 操作系统 (see),因为它们非常大并且对程序执行无用(它们变得有用仅在调试程序时)。

所以,答案是:当需要调试符号时,必须通过自己的力量从磁盘读取可执行文件。