- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
dladdr()
的内存语义是什么? ?
#define _GNU_SOURCE
#include <dlfcn.h>
int dladdr(void *addr, Dl_info *info);
typedef struct {
const char *dli_fname; /* Pathname of shared object that contains address */
void *dli_fbase; /* Base address at which shared object is loaded */
const char *dli_sname; /* Name of symbol whose definition overlaps addr */
void *dli_saddr; /* Exact address of symbol named in dli_sname */
} Dl_info;
从阅读手册页,不清楚是否
dli_fname
:
dli_sname
,但我怀疑它确实指向一个常量字符串(符号本身)。
dli_fname
返回者
dladdr()
?
最佳答案
这些字符串在通过 dlclose
卸载对象之前一直有效。 (直接或间接)。const char *
表示字符串不能被 dladdr
释放来电者是因为 free
期待 void *
,不是 const void *
.
关于c - dladdr() 输出参数的内存语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64160245/
dladdr()的内存语义是什么? ? #define _GNU_SOURCE #include int dladdr(void *addr, Dl_info *info); typedef str
我已经使用 gcc 的 -finstrument-functions 选项和以下(简化的)代码实现了跟踪行为: void __cyg_profile_func_enter(void *this_fn,
在研究一些库时我发现了这种代码 Dl_info info = { NULL, NULL, NULL, NULL }; if (!dladdr((void*) dirSep, &
我正在为我的应用程序编写分析工具,并且我正在使用 dladdr 将函数指针转换为名称。只要我处于调试状态,一切都可以正常工作,但是一旦我在发行版中编译(使用 XCode 5.1),所有名称转换都会失败
我正在尝试使用 dladdr。它正确定位了库,但未找到函数名称。我可以调用 objdump,做一些数学运算,然后获取我传递给 dladdr 的函数的地址。如果 objdump 可以看到它,为什么 dl
我有一个程序(应用程序,不是共享库): void func() { int RESULT = UNW_ESUCCESS; unw_context_t context; unw_
我使用 dladdr 来获取库的完整路径: Dl_info dl_info; int ret = dladdr((void*)&func, &dl_info); if (ret)
我正在编写一个 C++ 异常类,它必须在抛出站点提供有限的回溯。由于我的应用程序将是多线程的,因此可能会同时抛出异常。我在 Internet 上搜索了这个线程安全问题,但没有找到。 backtrace
我无法获得带有间接函数的 elf 的 gnu 扩展以与 dladdr 一起工作。 在下面的例子中,fabs和sin是libm中的两个动态函数,其中sin也是一个间接函数从其指针查找 fabs 效果很好
希望这是一个相当简单的 C++ 问题(而不是语言律师问题)。 如何在 C++ 中使用 GNU 扩展 dladdr ?通常人们会用 C 编写以下内容: #ifndef _GNU_SOURCE #defi
我想在 Windows 下实现回溯实用程序的模拟,以便将此信息添加到异常中。 我需要捕获返回地址,然后将其转换为符号名称。 我知道 StackWalk64 和 StackWalker project但
我正在处理 LLVM Tutorial ,但我在编译时遇到了麻烦。我写了一个重现该问题的最小示例: #include "llvm/Module.h" #include "llvm/LLVMContex
我是一名优秀的程序员,十分优秀!