在C / Linux中在没有磁盘I / O的情况下在Linux上自己的进程中读取调试/静态符号?

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

我发现了一些如何使用objdumpreadelfnm等获取此信息的方法,但这不是一个选择。

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

puenshou 回答:在C / Linux中在没有磁盘I / O的情况下在Linux上自己的进程中读取调试/静态符号?

ELF文件中的静态/调试符号以DWARF格式编码。可以通过分析调试信息来发现它们。但是,所有.debug_*节似乎都没有由操作系统(see加载未加载,因为它们很大且对程序执行没有用(它们仅在程序执行时才有用已调试)。

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

本文链接:https://www.f2er.com/2861901.html

大家都在问