BSBacktraceLogger icon indicating copy to clipboard operation
BSBacktraceLogger copied to clipboard

请问为什么不用系统提供的dladdr方法,而需要自己写一个fl_dladdr呢?

Open Dave1991 opened this issue 7 years ago • 4 comments

系统提供的dladdr方法是线程安全的,而代码中的fl_dladdr其实底层调用的也是系统提供的_dyld_get_image_header和_dyld_get_image_name等方法,而这些方法是线程不安全的,经过我本人的实验对比,fl_dladdr返回的symbolbuffer和dladdr返回的结果是一样的,不清楚作者是出于什么样的考虑自己重写了一个fl_dladdr方法。

Dave1991 avatar Aug 18 '17 02:08 Dave1991

这段代码是从 PLC 里面抄出来的

bestswifter avatar Aug 18 '17 02:08 bestswifter

PLC是?能给个地址吗?

Dave1991 avatar Sep 30 '17 07:09 Dave1991

@Dave1991 PLCrashReporter 某著名的iOS APP崩溃时收集堆栈信息的库

kobe1941 avatar Dec 10 '18 07:12 kobe1941

bool bs_dladdr(const uintptr_t address, Dl_info* const info) {
    dladdr((void *)address, info);
    return true;
}

的确,这个方法直接用dladdr好像也没啥问题

chenzhengxu avatar May 28 '19 11:05 chenzhengxu