2016-09-16 78 views
1

我已經在apache 2.4上構建了一個共享模塊。我可以得到apache構建succesfull。在Apache開始處有下面線路轉儲:ap_log_error轉儲apache啓動apache 2.4

if (r != NULL)  ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r, "test"); 

我derefernce結構變量r是類型server_rec(阿帕奇結構)的並且在下面dbx中的值

(dbx) p *r 
(process = 0x000000011001fa88, next = (nil), error_fname = "logs/error_log", error_log = 0x000000011001fa10, log = (module_levels = (nil), level = 4), module_config = 0x0000000110053420, lookup_defaults = 0x0000000110054ef8, defn_name = (nil), defn_line_number = 0, is_virtual = '\0', port = 0, server_scheme = (nil), server_admin = "[email protected]", server_hostname = "isi081.wdf.sap.corp", addrs = 0x000000011004e410, timeout = 60000000, keep_alive_timeout = 5000000, keep_alive_max = 100, keep_alive = 1, names = (nil), wild_names = (nil), path = (nil), pathlen = 0, limit_req_line = 8190, limit_req_fieldsize = 8190, limit_req_fields = 100, context = (nil)) 

我做沒有看到內存中的任何腐敗。但仍然有一個Apache的啓動轉儲。 如果我註釋掉這一行,那麼一切都按預期工作。 Apache開始,我也能夠完成操作。但是我們需要這個聲明才能啓用日誌記錄。有沒有其他的替代或修復相同的。

相同的代碼在apache 2.4上爲linux,solaris和HP等其他平臺工作。 也與apache 2.2一樣的代碼工作。只有在Apache 2.4上觀察到這個問題。

任何幫助將不勝感激。

+0

下面是轉儲和r是類型server_rec: – user1422750

+0

猜你應該用調試器檢查覈心文件。你可能想用'-g'選項重新編譯Apache。 –

回答

1

我在想你沒有完全編譯2.4頭文件,並且「ap_log_error」未被視爲它在2.4中的宏。

另外,名爲「r」的server_rec是超級誤導。 「r」傳統上是request_rec。我不能相信這實際上不是你問題的根源,也可能是間接的。