2010-02-09 3 views
3

J'ai besoin de déboguer un certain ensemble de commandes chaque fois que j'appelle gdb - donc j'ai décidé de les mettre dans mon .gdbinit. Tout allait bien, jusqu'à ce que je décide d'utiliser commands (pour exécuter un certain ensemble de commandes gdb chaque fois qu'un certain brkpt est frappé). Mon script ressemble à ceci: Comment écrire des commandes dans un script GDB qui sont exécutées chaque fois qu'un brkpt particulier est touché?


define setup handle SIGTRAP noprint nostop br 'Class1::Fun1(void)' run br 'Class2::Run(void)' c br Function2 commands 3 return 0 c end end 

Problem is , whenever I execute them one by one , it behaves perfectly , but when i source the script and run setup, il se comporte bizarrement après les commandes (ne fait pas ce qui se faisait auparavant).

Quelqu'un peut-il aider?

+1

Pourriez-vous préciser ce qu'il fait lorsqu'il ne fait pas ce qu'il devrait faire? Pour moi configurer cette fonction et l'exécuter fonctionne comme prévu, c'est-à-dire, il s'arrête à la fonction Class2 :: Run avec une configuration de point d'arrêt à Function2 avec les commandes qui y sont attachées. Le problème est-il que vous utilisez "commandes 3" et vous ne pouvez pas supposer que Function2 sera le point d'arrêt numéro 3? Vous pouvez les utiliser "commandes" sans paramètre pour définir les commandes au dernier point d'arrêt défini. – Olof

Répondre

1

Vous ne placez probablement pas les commandes sur le point d'arrêt que vous pensez être.

Si je vous, je modifier le script à ce qui suit:

define setup 
    handle SIGTRAP noprint nostop 
    br 'Class1::Fun1(void)' 
    run 
    br 'Class2::Run(void)' 
    c 
    br Function2 
    commands 
    return 0 
    c 
    end 
end 

Si aucune cible est donnée breakpoint, commands associe le plus récent point d'arrêt. De cette façon, quels que soient les autres points d'arrêt que vous avez dans votre session gdb, vos commandes seront associées au point d'arrêt sur Function2.

Questions connexes