que he escrito:¿Cómo hacer que gdb siga a execv? No funciona a pesar de dos programas sencillos "-modo exec seguimiento"
int main(int ac, char **argv) {
execv("/home/me/Desktop/execvtest2", argv);
}
y
int main(int ac, char **argv) {
execv("/home/me/Desktop/execvtest1", argv);
}
Los he compilado con gcc -g a los OutputFiles acuerdo. Estoy ejecutando Ubuntu 10.10 usando gcc (Ubuntu/Linaro 4.4.4-14ubuntu5.1) 4.4.5.
Cuando estoy depurando el primer programa con GNU gdb (GDB) 7.2-ubuntu, puedo dar un paso hasta la primera instrucción execv, pero luego los dos archivos simplemente continúan ejecutándose. Incluso si configuro el modo follow-exec como nuevo, no puedo ingresar al segundo programa. Cuando configuro catch exec, gdb se detiene en cada llamada a execv (de alguna forma, sin fuente vinculada para el segundo programa, y no puedo salir de gdb, ya que se cuelga !?), pero no puedo para pasar la llamada al programa inferior "nuevo" (como el ejecutivo reemplaza al proceso).
Entonces, ¿cómo se puede hacer esto? Debe haber una manera de entrar en el nuevo proceso ¿verdad? ¿Estoy haciendo algo mal?
Cheers
¿Qué sistema operativo, qué versión de 'gcc' estás usando? – alk
Acabo de probar esto usando 'gcc' version' (Debian 4.4.5-8) 4.4.5', establezco un punto de ruptura para la línea 2 y veo' gdb' muy bien interrumpido en los dos ejecutables. – alk
Por cierto: El 'gcc' utilizado para esta prueba (con la versión mencionada anteriormente) de alguna manera ahora no trata sobre' follow-exec-mode'. – alk