我尝试使用Sprof分析进行测试。我尝试使用MAN页面示例,但我无法看到页面中提到的输出,我收到错误
Inconsistency detected by ld.so: dl-open.c: 707: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!
$ sprof -V
sprof (Ubuntu GLIBC 2.23-0ubuntu9) 2.23
tried with Glibc-2.18 and 2.19 too
答案 0 :(得分:2)
这里有一个glibc错误:
最好继续在那里进一步讨论。
答案 1 :(得分:1)
该错误仅在sprof的特殊加载时发生,因此当使用sprof标志加载对象时,只需禁用断言__RTLD_SPROF允许我使用sprof,同时避免可能会干扰正常共享对象加载机制的更改。将glibc / elf / dl-open.c:707修改为:
if (!(__glibc_unlikely (mode & __RTLD_SPROF))) {
assert (_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT);
}
这对我来说适用于glibc-2.20,并已发布到https://sourceware.org/bugzilla/show_bug.cgi?id=22380