2010-02-18 7 views
3

J'avais des scripts en Python pour m'aider à déboguer avec GDB qui utilisait la fonction gdb.parse_and_eval (toujours documentée) pour obtenir les valeurs inférieures des arguments passés à une commande scriptée, et maintenant le module ne semble pas avoir de trace de cette fonction. Faire python import gdb; print dir(gdb) de GDB montre clairement que cette fonction est manquante.gdb Scripting python: où `parse_and_eval` a-t-il disparu?

j'ai écrit les scripts il y a quelque temps pour la GDB 6.8 dans le archer branche, et maintenant je ne peux trouver aucune information sur si elle a été dépréciée ou ce qui est arrivé à GDB 7.

Toute information à ce sujet?

Merci!

Répondre

4

Je ne sais pas où il est allé ou pourquoi, mais Qt mis en œuvre cette solution de contournement dans their code, qui peut être utile dans la pratique pour vous:

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 a été vérifiée dans la branche sur Archer, mais n'a pas été fusionné dans Mainline à temps pour la version 7.0. Il a été fusionné maintenant:

2009-12-03 Tom Tromey <[email protected]> 

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

et sera disponible dans la prochaine version 7.1.