来源:网海拾贝
在Linux下要保证顺序崩溃时生成Coredump要看重这些结果:
一、要保证存放Coredump的目次存在且历程对该目次有写权限。存放 Coredump的目次即历程的当前目次,一样平凡就是如今发出呼吁启动该历程时地点的目次。但假如是经由脚本启动,则脚天分够会修合理前目次,这时历程真正的当前目次就会与如今实行脚本地点目次不合。这时可以审查”/proc/<历程pid>/cwd“标志链接的目的来确定历程真正的当前目次地点。经由系统就事启动的历程也可经由这一方法审查。
二、若顺序调用了seteuid()/setegid()改动了历程的有遵命户或组,则在默许现象下系统不会为这些历程生成Coredump。很多就事顺序都会调用seteuid(),如MySQL,不管你用什么用户运转 mysqld_safe启动MySQL,mysqld克制的有遵命户一直是msyql用户。假如你如今因而用户A运转了某个顺序,但在ps里看到的这个顺序的用户倒是B的话,那么这些历程就是调用了seteuid了。为了可以让这些历程生成Coredump,需求将 /proc/sys/fs/suid_dumpable文件的内容改为1(一样平凡默许是0)。
三、这个一样平凡都晓得,就是要设置饶富大的Core文件大小限定了。顺序崩溃时生成的Core文件大小即为顺序运转时占用的内存大小。但顺序崩溃时的举动不成按凡是时的举动来估量,比如缓冲区溢出等错误可以招致堆栈被粉碎,因而经常会出现某个变量的值被修改成参差不齐的,然后顺序用这个大小去哀求内存就可以招致顺序比凡是时多占用很多内存。因而无论顺序正常运转时占用的内存何等少,要保证生成Core文件仍是将大小限定设为unlimited为好。
版权声明:
原创作品,允许转载,转载时请务必以超链接方法标明文章 原始来由 、作者信息和本声明。否则将追究法律责任。