2017-07-22 2 views
1

J'essaie de créer un gdbinit générique pour GDB natif et distant, où natif est i386 et distant est ARM. Pour i386, j'ai la commande set disassembly-flavor intel, qui casse l'initialisation pour GDB ARM-ciblé. La seule chose que j'ai trouvé qui me permet de savoir arch (au moins i386 vs ARM) est show arch commande, mais il imprime juste sa sortie à stdout, ne me permettant pas de l'obtenir pour la comparaison.Comment exécuter une commande uniquement pour une arche particulière?

Alors, est-il possible d'exécuter une commande uniquement pour certaines architectures, mais pas pour les ohers?

+0

Peut-on utiliser le plug-in Python? –

+0

@FlorianWeimer ne sais pas quel type de plugin vous voulez dire. Si vous voulez écrire 'python' et du code python dans' gdbinit', alors je suppose que je peux. Je ne sais pas quelle partie de l'API GDB Python doit être utilisée pour obtenir un arc avant qu'il y ait un fonctionnement inférieur. – Ruslan

Répondre

2

Vous pouvez tout simplement ignorer l'erreur en utilisant le plug-in Python:

python 
try: 
    gdb.execute("set disassembly-flavor intel") 
except: 
    pass 
end 

Ou vous pouvez vérifier l'architecture:

python 
if "(currently i386)" in gdb.execute("show arch", to_string=True): 
    gdb.execute("set disassembly-flavor intel") 
end