使用liblttng

时间:2015-08-06 07:53:31

标签: c++ function logging trace lttng

我正在使用用户空间C ++应用程序并使用Linux跟踪工具包,它提供了跟踪点(提供者,名称等)。

我想在源代码中放置一个

  

- tracepoint(provider,name,...)

每个函数入口和出口点的

语句。

是否可以通过某种方式自动化?手动放置所有这些非常麻烦。

除了方面编程之外,我想以某种方式做到这一点。

1 个答案:

答案 0 :(得分:1)

您可以使用h3帮助程序库从每个函数入口和出口获取LTTng-UST跟踪点。

  • 使用liblttng-ust-cyg-profile.so重新编译程序。
  • 通过预加载帮助程序库来运行它:
    • -g -finstrument-functions

这将为每个已检测的函数入口和出口生成跟踪事件。请注意,跟踪点仅包含函数地址,而不包含名称。这是cyg-profile的限制。要将这些映射回功能名称,您可以使用LD_PRELOAD=/path/to/liblttng-ust-cyg-profile.so ./myApp等实用程序。

有关详细信息,请参阅文档的Function Tracing部分。

根据仪表功能的数量,这可能会产生不可忽视的性能影响。此外,addr2line在技术上应该与C ++应用程序一起使用,但它可能很挑剔。我已经无法使用大型非平凡的C ++应用程序进行编译。您的里程可能会有所不同。