sprof MAN 页面中的示例不起作用

Posted

技术标签:

【中文标题】sprof MAN 页面中的示例不起作用【英文标题】:Example in the sprof MAN page is not working 【发布时间】:2017-11-01 06:17:13 【问题描述】:

我尝试使用 Sprof 分析进行测试。我尝试了 MAN 页面示例:https://github.com/makelinux/examples/tree/master/sprof,但我看不到页面中提到的输出,我收到错误

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

【问题讨论】:

manpages.ubuntu.com/manpages/xenial/man1/sprof.1.html 请提供您的代码。另见How to create a Minimal, Complete, and Verifiable example。 代码已经存在于手册页中 确认,谢谢。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。 谢谢 Jww,我刚刚开始处理这个问题,所以,我在论坛中记录了错误,因为其他人可能已经处理了这个问题。当时我没有得到任何意见。顺便说一句,我将按照您发送的链接中提到的步骤进行操作 【参考方案1】:

这已在此处报告为 glibc 错误:

Inconsistency detected by ld.so: dl-open.c: 717: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed!

最好继续在那里进行进一步的讨论。

【讨论】:

当然,我做到了【参考方案2】:

该错误仅发生在 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

【讨论】:

以上是关于sprof MAN 页面中的示例不起作用的主要内容,如果未能解决你的问题,请参考以下文章

VueJS 中的 v-html 不起作用(空页面)

C ++中的复数示例不起作用

节点 webkit 热键示例不起作用

JavaScript 中的简单变异观察者示例不起作用

Select2 基本示例不起作用

JQueryUI 单选按钮示例不起作用