You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Mac OS系统下创建应用程序及进程的内存转储文件?

嘿,在Mac OS上获取应用或进程的内存转储其实有几种顺手的方法,我给你拆解清楚:

方法一:用Activity Monitor(图形界面,小白友好)

这是最直观的方式,不用敲命令:

  • 打开Launchpad,找到「其他」文件夹里的Activity Monitor,或者直接用Spotlight(按Cmd+空格)搜名字打开
  • 在进程列表里找到你要转储的目标(右上角搜索框直接搜进程名更快)
  • 选中进程后,点顶部菜单栏的「查看」→「导出进程内存」
  • 选好保存路径和文件名,等着就行。导出的文件后缀一般是.mem,包含了进程的完整内存镜像
方法二:用LLDB命令行工具(开发者首选)

LLDB是Mac自带的调试器,灵活性更高:

  1. 先拿到目标进程的PID:可以用ps aux | grep 你的进程名在终端查,或者直接在Activity Monitor的「PID」列看
  2. 打开终端,输入lldb -p <你的PID>,把调试器挂载到目标进程上
  3. 进入LLDB交互界面后,输入process save-core ~/Desktop/你的转储文件名.core(路径可以自己改)
  4. 等转储完成,输入quit退出LLDB就行
方法三:用vmmap工具(灵活导出指定内存)

vmmap可以精准选择要导出的内存区域,也能导出完整内存:

  • 导出完整进程内存:在终端敲vmmap -w ~/Desktop/内存转储文件 <PID>-w参数表示导出可写的内存区域(基本就是进程的全部活跃内存)
  • 导出特定内存区域:先运行vmmap <PID>查看所有内存块的起始/结束地址,然后用vmmap -memory 起始地址-结束地址 <PID> > ~/Desktop/指定区域转储.txt把目标区域导出

一些小提醒

  • 如果遇到权限不足的问题,在命令前加sudo就行
  • 内存转储文件可能特别大(比如几GB),提前确认保存路径有足够空间
  • 用LLDB挂载进程时,目标应用会暂时冻结,转储完成退出LLDB后就会恢复正常

内容的提问来源于stack exchange,提问作者wachschaf

火山引擎 最新活动