gdb Python脚本:`parse_and_eval`去哪了?
我之前写了一些Python脚本,帮助我在使用GDB调试时进行排错。这些脚本用到了一个叫做 gdb.parse_and_eval
的函数(现在还在文档里),这个函数可以让我从传给脚本命令的参数中获取一些内部值。但是现在这个模块里似乎找不到这个函数了。我在GDB里运行 python import gdb; print dir(gdb)
,结果显示这个函数不见了。
我是在GDB 6.8的 archer 分支上写的这些脚本,现在我找不到关于这个函数是否被弃用或者在GDB 7中发生了什么的信息。
有没有人知道这方面的情况?
谢谢!
2 个回答
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版本中提供。
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)