我必须将一些代码迁移到LTTng。我们使用类似syslog的工具,使用类似printf的格式...
我发现有几个使用%p打印指针的日志行,但我不知道如何将这些行“翻译”成LTTng。
任何帮助都将不胜感激。
发布于 2015-11-21 00:28:00
如果您使用的是LTTng 2.7+,那么最好的选择是使用tracelog(),这是一种特殊的应用程序接口,旨在简化从日志记录到跟踪的迁移。
您应该能够将%p与tracelog()一起使用,因为它使用vsprintf()系列函数来格式化录制的消息。
如果你已经走上了定义静态跟踪点的道路,如果你的编译器支持C99,我建议使用由uintptr_t支持的CTF整数,否则使用unsigned long long或size_t (它应该能够在大部分时间内保存地址,尽管不能保证):
#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)
)
)然后你可以像这样使用它:
tracepoint(my_provider, my_memory_address, my_pointer);https://stackoverflow.com/questions/33822319
复制相似问题