Como fazer o gdb seguir execv? Não funciona apesar do "modo de execução seguinte"
Eu escrevi dois programas simples:
int main(int ac, char **argv ) {
execv( "/home/me/Desktop/execvtest2", argv );
}
e
int main(int ac, char **argv ) {
execv( "/home/me/Desktop/execvtest1", argv );
}
Eu os compilei com o gcc -g para os arquivos de saída correspondentes. Estou executando o Ubuntu 10.10 usando o gcc (Ubuntu / Linaro 4.4.4-14ubuntu5.1) 4.4.5.
Quando estou depurando o primeiro programa com GNU gdb (GDB) 7.2-ubuntu, posso avançar até a primeira instrução execv, mas depois os dois arquivos continuam funcionando. Mesmo se eu definir o modo de execução seguinte para novo, não posso entrar no segundo programa. Quando eu defino catch exec, o gdb pára em cada chamada para execv (de alguma forma, sem vinculado a fonte para o segundo programa, e eu não sou capaz de sair do gdb, como ele trava !?), mas eu não sou capaz de passo sobre a chamada para o "novo" (como exec substitui o processo) programa inferior.
Então, como isso pode ser feito? Deve haver uma maneira de entrar no novo processo certo? Estou fazendo algo errado?
Felicidades