首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用babeltrace python绑定从lttng ctf trace中获取debug_info?

如何使用babeltrace python绑定从lttng ctf trace中获取debug_info?
EN

Stack Overflow用户
提问于 2017-07-27 10:56:52
回答 1查看 302关注 0票数 0

我正在使用Babeltrace python3绑定来读取包含debug_info的lttng ust跟踪。当我从shell运行Babeltrace时,我在输出中看到了debug_info:

代码语言:javascript
复制
[13:28:29.998652878] (+0.000000321) hsm-dev lttng_ust_cyg_profile:func_exit: { cpu_id = 1 }, { ip = 0x4008E5, debug_info = { bin = "a.out@0x4008e5", func = "foo+0" }, vpid = 28208, vtid = 28211 }, { addr = 0x4008E5, call_site = 0x400957 }

从python绑定中,我可以获得其他事件字段(cpu_id、ip、addr、call_site...)但我在尝试访问debug_info、bin或func时遇到关键错误。

代码语言:javascript
复制
import babeltrace

collection = babeltrace.TraceCollection()
collection.add_traces_recursive('lttng-traces/a.out-20170624-132829/', 'ctf')

for e in collection.events:
    if e.name ==  'lttng_ust_cyg_profile:func_entry':
        print(e['addr'])
        print(e['func'])

Traceback (most recent call last):
  File "fields.py", line 9, in <module>
    print(e['func'])
  File "/usr/lib/python3/dist-packages/babeltrace.py", line 865, in __getitem__
    raise KeyError(field_name)
KeyError: 'func'

有没有办法从Python中获取这些字段?

我正在使用Babeltrace 1.5.2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-27 11:50:51

还没。在构建适当的处理图并运行它之后,使用Babeltrace 2 Python绑定是可能的,但这个主要修订版本到目前为止还没有发布(pre阶段)。

Babeltrace1中的调试信息有一个漏洞,text输出在打印时“注入”虚拟字段,但在此之前它们不可用,这就是为什么不能访问e['func']的原因。

目前最好的方法是创建一个babeltrace CLI子进程,一次一行输出,使用正则表达式查找所需的字段。丑陋,但这是目前可用的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45340562

复制
相关文章

相似问题

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