2009-12-27 12 views
5

Utilizzando gdb, sto cercando di rintracciare le chiamate di funzione di un server web. Ho impostato i breakpoint su ogni chiamata di funzione e quando dico a gdb di "eseguire" si interrompe in tutti i punti giusti mentre il server si avvia. Quindi gdb dice 'Programma terminato con il codice 01' e non si ferma più ai breakpoint (ovviamente). Tuttavia, il server Web è ancora in esecuzione.gdb in esecuzione su un server Web

Voglio essere in grado di rintracciare le chiamate di funzione effettuate su una richiesta HTTP in ingresso, quindi interrompere l'operazione durante l'avvio del server è inutile per me.

C'è qualche trucco nell'usare gdb quando si traccia un server daemon in modo che non termini come sopra?

risposta

1

set di follow-forchetta-mode bambino

vedere http://www.delorie.com/gnu/docs/gdb/gdb_26.html ad esempio

+0

Se il server Web in questione è Apache, è probabile che l'impostazione della modalità a forcella diretta * non * funzioni: per impostazione predefinita Apache forchetta diversi figli e non si sa quale gestirà una particolare richiesta. È probabile anche l'impostazione di "MaxClients 1". –

2

Lei non ha detto quale server si sta cercando di rintracciare, ma probabilmente si tratta di Apache.

Istruzioni dettagliate sono here. Notare l'argomento della riga di comando -X, che impedisce a httpd di eseguire il fork dei figli.

Si noti inoltre che le istruzioni sono il primo risultato per la ricerca this.

Problemi correlati