sprof MAN页面中的示例无效

时间:2017-11-01 06:17:14

标签: linux profiling glibc toolchain

我尝试使用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

2 个答案:

答案 0 :(得分:2)

答案 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