2009-12-27 152 views
5

使用gdb,我試圖跟蹤web服務器的函數調用。我在每個函數調用中都設置了斷點,當我告訴gdb'運行'時,它會在服務器啓動時在所有正確的位置中斷。然後gdb說'程序以代碼01結束',並且不再停止在斷點(顯然)。但是,Web服務器仍在運行。在web服務器上運行gdb

我希望能夠跟蹤對傳入的HTTP請求所做的函數調用,所以在服務器啓動期間破壞對我來說是無用的。

在跟蹤守護程序服務器時使用gdb是否有一些技巧,以便它不僅僅像上面那樣結束?

回答

1

組後續叉型的孩子

看到http://www.delorie.com/gnu/docs/gdb/gdb_26.html例如

+0

如果有問題的Web服務器是Apache,只需設置follow-fork-mode就可能不工作:默認情況下,Apache會分叉幾個孩子,而您不知道哪一個會處理特定的請求。設置「MaxClients 1」可能也是必需的。 –

2

你沒有說你想跟蹤哪個服務器,但有可能是Apache的。

詳細說明是here。請注意0​​命令行參數,該參數可防止httpd分叉子程序。

另請注意,說明是this搜索的第一個結果。

相關問題