Core Dump
- 系统级别的core dumps开关
- 把 limit core unlimited 添加到 /etc/launchd.conf 文件
- 没有 /etc/launchd.conf 文件就创建一个
- 然后重启电脑
- 把 limit core unlimited 添加到 /etc/launchd.conf 文件
- /cores 文件夹必须保证是可写的
- 让普通的用户都可写
drwxrwxr-t@ 2 root admin 68 Aug 21 23:08 cores sudo chmod o+w /cores drwxrwxrwt@ 2 root admin 68 Aug 21 23:08 cores
- 让普通的用户都可写
- 默认显示隐藏文件
defaults write com.apple.finder AppleShowAllFiles TRUE
- 在Terminal下面运行
- 预先在Shell里面设置core dumps的大小不限制
ulimit -c unlimited
- 如果是csh的话,用下列指令
limit coredumpsize unlimited
- 预先在Shell里面设置core dumps的大小不限制
- 测试
再开一个终端执行kill$/Applications/TextEdit.app/Contents/MacOS/TextEdit
/cores目录下生成core.*文件即设置成功$ killall -ABRT TextEdit
- 使用转储
otool 命令查看core dumps
gdb/lldb的 -c 参数来调试core dumpslldb -c /cores/core.***
注意:开启SIP保护的设备可能无法自动生成转储文件
关闭SIP保护Panic Dump
需双机调试,最好都使用网线调试机(非panic dump机)
- 创建转储文件夹
sudo mkdir /PanicDumps
- 赋予文件夹任意写权限
sudo chown root:wheel /PaincDumps sudo chmod 1777 /PanicDumps
- 激活转储服务
查看激活状态,0表示已激活sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.kdump.plist
server$ sudo launchctl list | grep kdump Password:******** - 0 com.apple.kdumpd
被调试机(panic dump机)
- 设置内核Panic时核心转储参数
重启后生效sudo nvram boot-args="debug=0xd44 _panic_ip=[MAC IP ADDR]" sudo reboot
- 测试Panic Dump
使用DTrace触发panic
系统会崩溃重启或者挂起,若挂起按sudo dtrace -w -n "BEGIN{ panic();}"
Left-⌘
+Right-⌘
+Power
- 使用Panic Dump
崩溃后,在调试机的/PanicDumps 目录下找到xnu-xxx.gz,并解压调试:gunzip xnu-xxx.gz lldb -c /PanicDump/core-xnu-xxxxxx target create --core "/PanicDumps/core-xxxxxx"
- 取消panic dump
sudo nvram -d boot-args sudo reboot
没有评论:
发表评论