我有一个在 Linux 下失控的进程,我想创建一个转储文件,我可以将它带到我的开发机器上,并在那里进行检查。
在 Windows 中,可以通过多种不同方式(包括 ADVPlus 和 Windows 任务管理器)创建正在运行的程序的“小型转储”,方法是转到“进程”选项卡并右键单击选择“创建转储文件”。
有没有办法在 Linux 中实现这一点?
我需要调用堆栈、堆和堆栈内存(尤其是堆栈)、异常和其他所有内容。
小智 16
那么创建转储文件的方法是:
gcore - Generate a core file for a running process
Run Code Online (Sandbox Code Playgroud)
概要 gcore [-o 文件名] pid
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)
归档时间: |
|
查看次数: |
54226 次 |
最近记录: |