2014-12-21 98 views
19

在Linux下,當一個進程崩潰,核心轉儲將被創建。即使進程正常運行,如何創建核心轉儲?

但是,我想創建一個核心轉儲過程不會崩潰,但看起來越野車。遠程專家需要核心轉儲來分析。

在Windows下,我們可以通過任務管理器創建進程的轉儲文件,之後進程仍在運行。

在Linux下可以嗎?

回答

20

呼叫gdb,然後

attach pid 
gcore 

其中pid是有問題的進程的進程ID。

9

如果要以編程方式執行此操作,請嘗試使用google-coredumper。他們的例子:

#include <google/coredumper.h> 
... 
WriteCoreDump('core.myprogram'); 
/* Keep going, we generated a core file, 
* but we didn't crash. 
*/ 
14

你可以用你的代碼中做到這一點:

if (fork() == 0) abort(); 
+5

這可能不是最好的解決方案,但男孩很聰明:) –

17

您可以使用正確的命令行gcore實用程序:

gcore [-o filename] pid 

順便說一句,如果你想看的過程中唯一的堆棧跟蹤,gstack工具將做的工作。

這兩個實用程序都配有gdb