GDB Python脚本编程:`parse_and_eval`去哪了?

3
我有一些用Python编写的脚本,可以帮助我在GDB中进行调试,其中使用了函数gdb.parse_and_eval(仍有文档记录)来获取传递给脚本命令的参数的下属值,但现在该模块似乎没有这个函数的任何痕迹。从GDB中执行python import gdb; print dir(gdb) 明显显示此函数已经丢失。
我在archer分支中的GDB 6.8中编写了这些脚本,现在我找不到任何关于它是否被弃用或GDB 7中发生了什么的信息。
有关此事的任何信息吗?
谢谢!
2个回答

4

我不知道它去哪里了或者为什么,但Qt在他们的代码中实现了这个解决方法,这可能对你有实际用处:

def parseAndEvaluate(exp):
        if gdb.VERSION.startswith("6.8.50.2009"):
            return gdb.parse_and_eval(exp)
        # Work around non-existing gdb.parse_and_eval as in released 7.0
        gdb.execute("set logging redirect on")
        gdb.execute("set logging on")
        gdb.execute("print %s" % exp)
        gdb.execute("set logging off")
        return gdb.history(0)

4

parse_and_eval已经在Archer分支上进行了检查,但是在7.0发布之前没有合并到主线。现在已经合并了:

2009-12-03  Tom Tromey  <tromey@redhat.com>

        * python/python.c (gdbpy_parse_and_eval): New function.
        (GdbMethods): Add "parse_and_eval".

并将在即将推出的7.1版本中提供。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接