首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用lttng记录内存地址?

如何使用lttng记录内存地址?
EN

Stack Overflow用户
提问于 2015-11-20 16:44:10
回答 1查看 138关注 0票数 1

我必须将一些代码迁移到LTTng。我们使用类似syslog的工具,使用类似printf的格式...

我发现有几个使用%p打印指针的日志行,但我不知道如何将这些行“翻译”成LTTng。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2015-11-21 00:28:00

如果您使用的是LTTng 2.7+,那么最好的选择是使用tracelog(),这是一种特殊的应用程序接口,旨在简化从日志记录到跟踪的迁移。

您应该能够将%ptracelog()一起使用,因为它使用vsprintf()系列函数来格式化录制的消息。

如果你已经走上了定义静态跟踪点的道路,如果你的编译器支持C99,我建议使用由uintptr_t支持的CTF整数,否则使用unsigned long longsize_t (它应该能够在大部分时间内保存地址,尽管不能保证):

代码语言:javascript
复制
#include <stdint.h>

TRACEPOINT_EVENT(
    my_provider,
    my_memory_address,

    /* arguments (input) */
    TP_ARGS(
        const void *, address
    ),

    /* event fields (output)  */
    TP_FIELDS(
        ctf_integer_hex(uintptr_t, address, address)
    )
)

然后你可以像这样使用它:

代码语言:javascript
复制
tracepoint(my_provider, my_memory_address, my_pointer);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33822319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档