Wie kann man gdb dazu bringen, execv zu folgen? Funktioniert trotz "follow-exec-mode" nicht

Ich habe zwei einfache Programme geschrieben:

int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest2", argv );
}

und

int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest1", argv );
}

Ich habe sie mit gcc -g zu den entsprechenden Ausgabedateien kompiliert. Ich verwende Ubuntu 10.10 mit gcc (Ubuntu / Linaro 4.4.4-14ubuntu5.1) 4.4.5.

Wenn ich das erste Programm mit GNU gdb (GDB) 7.2-ubuntu debugge, kann ich bis zur ersten execv-Anweisung schrittweise vorgehen, aber dann laufen die beiden Dateien einfach weiter. Selbst wenn ich den Follow-Exec-Modus auf neu stelle, kann ich nicht in das zweite Programm einsteigen. Wenn ich catch exec setze, stoppt gdb bei jedem Aufruf von execv Schritt über den Aufruf in das "neue" (da exec den Prozess ersetzt) ​​minderwertige Programm.

Wie kann das gemacht werden? Es muss einen Weg geben, in den neuen Prozess einzusteigen, oder? Mache ich etwas falsch?

Prost

Antworten auf die Frage(2)

Ihre Antwort auf die Frage