gdb python scripting:哪里有`parse_and_eval`走了?
问题描述:
我在Python中有一些脚本来帮助我使用GDB进行调试,该功能使用函数gdb.parse_and_eval
(仍有文档)从传递给脚本命令的参数中获取较低的值,现在该模块似乎没有任何跟踪该功能。从GDB做python import gdb; print dir(gdb)
清楚地表明这个功能缺失。gdb python scripting:哪里有`parse_and_eval`走了?
我在射手分支写剧本前一段时间的GDB 6.8,而现在大约如果它被弃用我无法找到任何信息或GDB 7
任何有关它的信息发生了什么?
谢谢!
答
我不知道它去了哪里为什么,但Qt的实现了这个解决办法在their code,这实际上可以是对你有用:
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)
答
parse_and_eval
被签入的射手分支,但一直没有7.0版本已被合并为主线。它现已合并:
2009-12-03 Tom Tromey <[email protected]>
* python/python.c (gdbpy_parse_and_eval): New function.
(GdbMethods): Add "parse_and_eval".
并将在即将发布的7.1版本中提供。