如何在 Linux 中创建正在运行的进程的转储文件?

Joh*_*ing 16 linux dump

我有一个在 Linux 下失控的进程,我想创建一个转储文件,我可以将它带到我的开发机器上,并在那里进行检查。

在 Windows 中,可以通过多种不同方式(包括 ADVPlus 和 Windows 任务管理器)创建正在运行的程序的“小型转储”,方法是转到“进程”选项卡并右键单击选择“创建转储文件”。

有没有办法在 Linux 中实现这一点?

我需要调用堆栈、堆和堆栈内存(尤其是堆栈)、异常和其他所有内容。

小智 16

那么创建转储文件的方法是:

   gcore - Generate a core file for a running process
Run Code Online (Sandbox Code Playgroud)

概要 gcore [-o 文件名] pid


Pyt*_*ner 8

pmap <PID>
Run Code Online (Sandbox Code Playgroud)

或者

strace -f -o xxx -p <PID> 
Run Code Online (Sandbox Code Playgroud)

可能是您正在寻找的工具。

pmap 向您显示有关所提供进程的内存使用情况的概述。strace 跟踪进程执行的每一个操作。使用 -f 告诉 strace 也考虑监视子进程,使用 -o xxx 告诉 strace 将输出写入文件。您还可以使用 strace 启动一个新进程,例如使用

strace cat /etc/passwd
Run Code Online (Sandbox Code Playgroud)

如果您只对特定信息感兴趣,例如打开了哪些文件,您可以相应地启动 strace:

strace -f -o xxx -e trace=open -p <PID>
Run Code Online (Sandbox Code Playgroud)


inf*_*inf 6

尝试这个:

cat /proc/<pid>/smaps > mem.txt
Run Code Online (Sandbox Code Playgroud)

链接也可能对您有所帮助。