Jak zrobić gdb follow execv? Nie działa pomimo trybu „follow-exec”
Napisałem dwa proste programy:
int main(int ac, char **argv ) {
execv( "/home/me/Desktop/execvtest2", argv );
}
i
int main(int ac, char **argv ) {
execv( "/home/me/Desktop/execvtest1", argv );
}
Skompilowałem je za pomocą gcc -g do odpowiednich plików wyjściowych. Używam Ubuntu 10.10 przy użyciu gcc (Ubuntu / Linaro 4.4.4-14ubuntu5.1) 4.4.5.
Kiedy debuguję pierwszy program z GNU gdb (GDB) 7.2-ubuntu, mogę przejść do pierwszej instrukcji execv, ale wtedy te dwa pliki nadal działają. Nawet jeśli ustawię tryb follow-exec na nowy, nie mogę przejść do drugiego programu. Kiedy ustawiam catch exec, gdb zatrzymuje się przy każdym wywołaniu execv (niektóre jak bez źródła połączonego dla drugiego programu, a ja nie jestem w stanie zamknąć gdb, jak to się trochę zawiesza !?), ale nie jestem w stanie przejść przez połączenie do „nowego” (jak exec zastępuje proces) gorszego programu.
Jak to zrobić? Musi istnieć sposób na wkroczenie w nowy proces, prawda? czy robię coś źle?
Twoje zdrowie