2015-08-26 27 views
0

Linux中用於C++進程的內存轉儲的最佳CLI工具是什麼?我有一個程序監視Linux上運行的不同進程的內存使用情況。對於基於Java的過程,我使用jstack和Jmap進行線程和堆轉儲。但是,有沒有什麼好的CLI工具對基於C++的進程採取類似的轉儲?如果是的話,我們如何使用它們,一旦轉儲被採取如何分析轉儲?Linux中用於C++的內存轉儲的最佳CLI工具

任何inuputs將不勝感激。

+0

我可以建議gcore這是一個開源的傾銷遠程過程。使用示例可以在這裏找到:http://gsp.com/cgi-bin/man.cgi?section=1&topic=gcore。另一種選擇是在運行時打開該進程,然後執行「generate-core-file」 – Zohar81

+0

謝謝Zohar。 gcore生成核心轉儲,但會告訴我內存中加載了什麼?另外,如果CPU使用率很高,是否需要轉儲gcore來幫助調試? – Vikram

+0

gcore基本上暫停的過程並且比轉儲。 gcore本身就是一個過程,根據我的經驗運行得非常快。如果由目標進程導致的CPU負載轉儲,應該比它快(因爲轉儲發生時進程被掛起) – Zohar81

回答

0

我會推薦使用gcore這是一個開源可執行文件來轉儲遠程進程。爲了實現一致性,目標進程在收集內存時被暫停,並在之後恢復。

使用信息可以在下面的鏈接中找到:

gsp.com/cgi-bin/man.cgi?section=1&topic=gcore 

另一種選擇是經由GCC,通過附着過程中的gcc實例化並鍵入「的gcore」命令,然後分離它。

$ gdb --pid=123 
(gdb) gcore 
Saved corefile core.123 
(gdb) detach 
相關問題