web-dev-qa-db-fra.com

gdb - débogage avec une entrée canalisée (pas des arguments)

Je lance généralement mon programme avec:

Perl -e 'print "A"x200' | ./vuln_prog

Le stdin est consommé par une fonction gets() en C++.

Si ce n'était qu'un argument de commande, je pourrais ouvrir gdb en faisant:

gdb ./vuln_prog
run $(Perl -e 'print "A"x200')

Cependant, mon scénario n'est pas un argument de commande, mais plutôt une entrée (STDIN?). Comment pourrais-je déboguer cela dans gdb? J'ai essayé un tas d'options, mais rien ne semble vraiment fonctionner.

Je voudrais normalement simplement exécuter gdb sur le processus, et quand il demande une entrée utilisateur, tapez-le, mais je ne veux pas taper juste "A". Je veux taper tous les caractères de\x00-\xff, que je ne peux pas taper.

67
mandreko
gdb ./vuln_prog
run < filename_with_input
90
zed_0xff