Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用babeltrace python绑定从lttng ctf跟踪中获取调试信息?_Python_Lttng_Babeltrace - Fatal编程技术网

如何使用babeltrace python绑定从lttng ctf跟踪中获取调试信息?

如何使用babeltrace python绑定从lttng ctf跟踪中获取调试信息?,python,lttng,babeltrace,Python,Lttng,Babeltrace,我正在使用Babeltrace Python 3绑定来读取包含调试信息的lttng ust跟踪。从shell运行Babeltrace时,我在输出中看到调试信息: [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" }, vp

我正在使用Babeltrace Python 3绑定来读取包含调试信息的lttng ust跟踪。从shell运行Babeltrace时,我在输出中看到调试信息:

[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\u id、ip、addr、call\u site…),但我在尝试访问debug\u info、bin或func时遇到了关键错误

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'
import-babeltrace
collection=babeltrace.TraceCollection()
集合。添加“跟踪”-递归('lttng-traces/a.out-20170624-132829/','ctf')
对于collection.events中的e:
如果e.name='lttng\u ust\u cyg\u profile:func\u entry':
打印(e['addr'])
打印(e['func'])
回溯(最近一次呼叫最后一次):
文件“fields.py”,第9行,在
打印(e['func'])
文件“/usr/lib/python3/dist packages/babeltrace.py”,第865行,在__
raise KeyError(字段名称)
键错误:“func”
有没有办法从Python中获取这些字段


我正在使用Babeltrace1.5.2,但还没有。在构建适当的处理图并运行它之后,使用Babeltrace 2 Python绑定是可能的,但此主要修订版至今尚未发布(前期)

Babeltrace 1中的调试信息有一个漏洞,
文本
输出在打印时“注入”虚拟字段,但在此之前它们不可用,所以这就是为什么您无法访问
e['func']


目前最好的方法是创建一个
babeltrace
CLI子流程,并使用正则表达式查找所需的字段。难看,但这是今天可以买到的。

还没有。在构建适当的处理图并运行它之后,使用Babeltrace 2 Python绑定是可能的,但此主要修订版至今尚未发布(前期)

Babeltrace 1中的调试信息有一个漏洞,
文本
输出在打印时“注入”虚拟字段,但在此之前它们不可用,所以这就是为什么您无法访问
e['func']


目前最好的方法是创建一个
babeltrace
CLI子流程,并使用正则表达式查找所需的字段。难看,但这是今天可用的。

顺便说一句,你应该将问题的标题改写为问题。顺便说一句,你应该将问题的标题改写为问题。