6
votes

Comment attacher-t-on automatiquement un débogueur à un processus au début du processus sur OS X?

J'ai un processus qui abrite un processus d'assistance. Parfois, j'ai besoin de déboguer des échecs de démarrage dans le deuxième processus.

sur Windows, j'utiliserais des options d'exécution de fichier d'images ou ntsd -o . Cependant, je n'ai aucune idée de la façon de faire cela avec GDB sur OS X.


0 commentaires

3 Réponses :


2
votes

Je ne pense pas que vous puissiez avoir un lancement de GDB de la même manière.

Au lieu de cela, exécutez votre processus parent à partir de GDB ou joignez-le au processus en cours d'exécution avant qu'il fourche l'assistant. Il y a un paramètre appelé mode de suivi que les contrôles qui traitent le débogueur suivent. Jetez un coup d'œil à Le manuel GDB pour une belle description.


3 commentaires

Ah, qui semble en effet quelque chose dont j'aurais besoin. Il semble que le processus parent ne soit plus débogué après le VFORK (), mais je vais l'essayer. Ce serait triste, cependant, si c'est le cas.


Eh bien, c'était une acceptation rapide. :-) Voir ma réponse. gdb - lui fait ce que tu veux.


@jeff: Vous pouvez toujours attacher à nouveau au parent avec une autre instance de GDB. Je ne suis pas sûr de se détacher du parent ou non. Cela fait longtemps que j'ai débogué un module Apache à l'aide de cela.



8
votes

Utilisez gdb --wait . Par exemple, essayez xxx

de la ligne de commande, puis lancez TextEdit.


1 commentaires

Avec lldb, il est lldb --wait-fortatata-nom-textedit



2
votes

Si vous utilisez launchd sur les processus d'apparition, alors il y a un waitfordebugger Boolean Key qui part dans le travail fichier p-list . Si c'est oui, alors Lanckd attend (étonnamment!) Pour le débogueur avant EXEC () Ing du travail.


2 commentaires

Aussi intéressant. Comment utilise-t-on le lancé pour apparaître un processus? J'utilise Fork () et EXEC ().


Je vais laisser Quinn répondre pour moi: développeur.apple.com/mac /Library/technotes/tn2005/tn2083.html Découvrez également la page d'homme pour LaundD.Plist (5)