2013-03-07 121 views
5

我有一個服務器寫在C++崩潰在我沒有直接訪問的生產環境。崩潰產生一個巨大的核心轉儲〜34G,我不能在本地複製。我需要分析核心轉儲,但不知道如何複製它不能完成。我嘗試在目標上運行gdbserver,但它並沒有將核心文件作爲參數,似乎只適用於從主機運行遠程應用程序的調試。有沒有辦法做到這一點?gdb調試遠程核心轉儲

+0

對於生成該大小轉儲的程序,您是否已經有一個日誌記錄機制來幫助您將問題縮小到應用程序的特定部分? – didierc 2013-03-07 16:51:52

+0

使用'ssh'登錄到遠程機器 - 如果你有'gdbserver'訪問權限,我希望你可以做大部分事情。 – 2013-03-07 16:52:08

+0

我不能'ssh'到遠程機器,但可以讓系統管理員爲我運行'gdbserver'之類的東西,但他無法分析和調試核心文件。我正在考慮一種更持久的解決方案,這種解決方案在將來發生時也會起作用。而且我們還沒有實現適當的日誌記錄機制:( – user1444800 2013-03-07 16:59:39

回答

1

我需要分析核心轉儲,但不知道如何在不復制它的情況下完成它。

你不行。你需要把核心轉儲放到你可以運行GDB的地方。

我不能ssh到遠程機器,但可以要求系統管理員爲我運行類似gdbserver但他不能分析和調試核心文件。

你不需要sysadmin來分析任何東西。您只需要讓他運行一系列GDB命令,並向您發送輸出。例如。

where 
thread apply all where 
info registers 
disas 

......將讓你的方式來理解這個問題,並會採取你的系統管理員不到5分鐘。

我仍然需要解壓縮才能在gdb上運行它,我不想在本地機器上運行它。

另外,與您的經理談談。您的開發設置是不合理。您必須能夠分析本地的生產崩潰情況,這意味着您必須能夠訪問足夠強大的機器。