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版本中提供。