gpt4 book ai didi

c++ - 如何在 GDB/MI 中获取 -interpreter-exec 的输出?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:17 24 4
gpt4 key购买 nike

我正在为 GDB/MI 编写一个包装器,但是,我在 MI 界面中遗漏了一些命令。例如,“信息变量”命令。我可以使用“-interpreter-exec console”执行它,但是获取它的输出很棘手,因为它将所有内容写入控制台记录而不是结果记录。所以我决定只获取提示符(“(gdb)”行)和“^done”记录之间的每条控制台记录,将它们连接起来,并作为结果返回。我的问题是——这安全吗?看来这种做法容易出错,但我没有别的想法。想法?

更新:此外,像这样使用 python 可能很有用 -interpreter-exec console "python\nprint(gdb.execute('info variables', False, True))\n" 结果将显示在一行中,这很好,但我如何安全地准确地获得这条线?也许我应该在它前面加上一些标记...无论如何,gdb.execute 的第三个参数似乎不受普遍支持,因此依赖它可能不是一个好主意。

最佳答案

嗯,事实上,带有第三个参数的 gdb.execute 实际上在 2011 年的 gdb 7.3 中得到支持,所以我想使用它是可以的。所以我决定使用这个命令

import gdb
import sys


class ConcatCommand(gdb.Command):
"""Executes a command and print concatenated results with a prefix."""

def __init__(self):
super(ConcatCommand, self).__init__("concat", gdb.COMMAND_USER)

def invoke(self, arg, from_tty):
pair = arg.partition(' ')
sys.stdout.write(pair[0] + gdb.execute(pair[2], False, True))
sys.stdout.flush()

ConcatCommand()

-interpreter-exec console "concat token info variables" 一样执行它。然后我只获取以 token 开头的控制台记录的内容。

关于c++ - 如何在 GDB/MI 中获取 -interpreter-exec 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com