如何在GDB/MI中获取-Interpreter语言 - Exec的输出
How to get output of -interpreter-exec in GDB/MI?
我正在为gdb/mi编写包装器,但是,我错过了MI接口中的一些命令。例如,"信息变量"命令。我可以使用" -InterPreter-Exec控制台"执行它,但是获得其输出非常棘手,因为它将所有内容都写入控制台记录而不是结果记录。因此,我决定仅在提示("(gdb)"行)和"^doad"记录之间进行所有控制台记录,并将其串联并返回。我的问题是 - 这是安全的吗?看来这种方法容易出错,但我没有其他想法。想法?
更新:另外,使用像此-interpreter-exec console "pythonnprint(gdb.execute('info variables', False, True))n"
这样的python可能会很有用,结果将出现在一行中,这很不错,但是我仍然如何安全地获得此行?也许我应该用一些代币进行预处理...无论如何,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"
一样执行它。然后,我只采用以令牌开始的控制台记录的内容。
相关文章:
- 不同语言中相同代码的不同行为
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- Rextester 语言编译C++问题
- 如何将多种语言设置放在单个 .clang 格式文件中
- 不同语言中的模运算符差异
- 刚接触C++,难以理解语言的细微差别
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 我们可以用 C 语言嵌套 #define 和 #if 吗?
- 我的C++语言蛮力算法有问题
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 为什么编程语言被编译为汇编程序而不是二进制?
- QDirIterator语言 - No hasNext not FilePath reaction
- "C.UTF-8" C++ Windows 上的语言环境?
- 了解 cin.fail() 和 cin.clear语言 - Vector 追加程序
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- 如何在GDB/MI中获取-Interpreter语言 - Exec的输出