首页 > Unix/Linux > 如何在Mac OSX上面生成core dumps

如何在Mac OSX上面生成core dumps

  使用环境:macOS Sierra 10.12.3。
  core dumps被认为是一种很原始的调试工具并不恰当。事实上,它在调试困难的问题时是非常有用的,尤其是当你在本地不能重现这个问题的时候。
  你可以把 limit core unlimited 添加到 /etc/launchd.conf 文件中,来打开系统级别的core dumps开关。如果没有 /etc/launchd.conf 文件就创建一个,然后重启电脑。更多信息请查看 launchd.conf 的man页面。
  另外你如果想在Terminal下面运行你的程序,你可以预先在Shell里面设置core dumps的大小。
  通过下面的命令

$ ulimit -c unlimited 

  如果是csh的话,用下面的

$ limit coredumpsize unlimited

  Core dumps 是被写进 /cores 文件夹下面,一般的话,系统都会自动创建,如果没有创建的话,就运行下面的命令:

$ sudo mkdir /cores 
$ sudo chown root:admin /cores 
$ sudo chmod 1775 /cores

  /cores 文件夹必须保证是可写的。默认的情况下,它仅仅允许 root 和在 admin 组下面的可写。如果你想让普通的用户都可写,就运行下面的命令:

$ sudo chmod o+w /cores

  (注:这个就是Linux权限的问题了,苹果文档写的就是详细)

开始测试

$ /Applications/TextEdit.app/Contents/MacOS/TextEdit
#再开一个终端执行kill
$ killall -ABRT TextEdit

  你的应用将会退出并显示一个 “Abort trap (core dumped)” 的消息。你现在就可以在 /cores 下面找到core dumps文件了。你也可以用 otool 命令查看core dumps。最后,你可以用GDB的 -c 参数来调试core dumps。
  搞crash程序,有很多种方法,也可以用:

$ sleep 100 & killall -SIGSEGV sleep

  参考资料:https://developer.apple.com/library/content/technotes/tn2124/_index.html

  1. 还没有评论
评论提交中, 请稍候...

留言


可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks