2017-09-05 3 views
1

Fourni app2 est déclenché par app1 dans lequel il y a quelque chose comme système ("./ app2"). app1 fait aussi beaucoup de préparation comme la création de répertoires, fichiers, configuration ... pour l'exécution d'app2.Comment gdb à partir de main() de app2 déclenché par app1?

Comment puis-je gdb app2 à partir de la première ligne de son main()? Ce que j'ai essayé ci-dessous ne fonctionne pas.

gdb app2 
    b main 
    shell ./app1 

Répondre

0

system("./app2");

Il y a quelques façons d'y parvenir:

  1. Si app1 ne se ferme pas stdin, stdout, stderr, vous pouvez modifier app1 de le faire à la place: `système ("gdb ./app2")
  2. Vous pouvez modifier app2 à attendez pour que le débogueur soit attaché, par ex. this answer montre. Ensuite, exécutez app1 et utilisez gdb -p $child_pid depuis une autre fenêtre.
  3. Si app1 ne fourche pas d'enfants avant app2, vous pouvez utiliser (gdb) set follow-fork child et ont GDB démarre automatiquement le débogage app2 après app1 fourches il.