2009-12-27 11 views
5

Utilizando gdb, estoy tratando de rastrear las llamadas a funciones de un servidor web. Establezco puntos de interrupción en cada llamada de función y cuando le digo a gdb que 'ejecute' se rompe en todos los lugares correctos mientras el servidor se inicia. Entonces gdb dice 'El programa terminó con el código 01' y ya no se detiene en los puntos de interrupción (obviamente). Sin embargo, el servidor web aún se está ejecutando.ejecutando gdb en un servidor web

Quiero ser capaz de rastrear las llamadas de función realizadas en una solicitud de HTTP entrante, por lo que romper conmigo durante el inicio del servidor es inútil para mí.

¿Hay algún truco para usar gdb al rastrear un servidor daemon para que no termine como se describió anteriormente?

Respuesta

1

set-tenedor-modo de seguimiento del niño

ver http://www.delorie.com/gnu/docs/gdb/gdb_26.html por ejemplo

+0

Si el servidor web en cuestión es Apache, simplemente establecer "follow-fork-mode" probablemente * no * funcionará: de manera predeterminada, Apache utiliza varios elementos secundarios y no sabe cuál manejará una solicitud en particular. Es probable que también sea necesario configurar "MaxClients 1". –

2

Usted no ha dicho qué servidor usted está tratando de rastrear, pero probablemente es Apache.

Las instrucciones detalladas son here. Tenga en cuenta el argumento de línea de comandos -X, que evita que httpd bifurque a los elementos secundarios.

También tenga en cuenta que las instrucciones son el primer resultado para la búsqueda this.

Cuestiones relacionadas