2009-12-27 5 views
5

En utilisant gdb, j'essaie de suivre les appels de fonction d'un serveur Web. Je mets des points d'arrêt à chaque appel de fonction et quand je dis à gdb de «courir», il se casse à tous les bons endroits pendant que le serveur démarre. Alors gdb dit 'Le programme s'est terminé avec le code 01' et ne s'arrête plus aux points d'arrêt (évidemment). Cependant, le serveur Web est toujours en cours d'exécution. Je veux être capable de tracer les appels de fonction effectués sur une requête HTTP entrante, donc la seule rupture au démarrage du serveur est inutile pour moi.Exécution de gdb sur un serveur Web

Y a-t-il un truc à utiliser gdb pour tracer un serveur démon afin qu'il ne se termine pas comme ci-dessus?

Répondre

1

set enfant suivi fourche mode

voir http://www.delorie.com/gnu/docs/gdb/gdb_26.html par exemple

+0

Si le serveur web en question est Apache, il ne fonctionnera probablement pas en mode fork: par défaut, Apache forke plusieurs enfants, et vous ne savez pas lequel traitera une requête particulière. La définition de "MaxClients 1" est probablement également requise. –

2

Vous n'avez pas dit quel serveur vous essayez de tracer, mais il est probable Apache. Les instructions détaillées sont here. Notez l'argument de ligne de commande -X, qui empêche httpd de forking enfants.

Notez également que les instructions sont le premier résultat de la recherche this.

Questions connexes