无法编写核心转储.核心转储已被禁用

Omu*_*sal 21 c++ java eclipse boost opencv

我一直致力于一个愿景项目,并使用JNI的Java中的一些C++库.

操作系统:Ubuntu 12.04

在我的项目中,我使用boost库来生成随机数.但有时我会得到如下例外情况:

Core dum140002367330048 also had an error]
#
# A fatal error has been detected by the Java Runtime Environment:    
#
#  SIGSEGV (0xb) at pc=0x00007f54f72a615a, pid=11979, tid=140002352568064
#
# JRE version: Java(TM) SE Runtime Environment (7.0_67-b01) (build 1.7.0_67-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libCBIR.so+0x3215a]  boost::random::mersenne_twister_engine<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>::operator()()+0x3a
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
Run Code Online (Sandbox Code Playgroud)

当我在StackOverflow上搜索这个时,我发现了一些与IDE(Eclipse)相关的问题.该应用程序独立于IDE.因此,解决方案也必须独立于IDE.有任何想法吗?

Urs*_*ong 25

我遇到了同样的问题.

因为,错误本身暗示 -

无法编写核心转储.核心转储已被禁用.要启用核心转储,请ulimit -c unlimited在再次启动Java之前尝试

ulimit获取并设置用户限制.有关ulimit do的更多信息 -

man ulimit
Run Code Online (Sandbox Code Playgroud)

所以,打开一个终端并运行 -

ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题.要检查更改是否成功,请运行 -

ulimit -c -l
Run Code Online (Sandbox Code Playgroud)

这应该给你一个输出如下 -

core file size          (blocks, -c) unlimited
max locked memory       (kbytes, -l) 64
Run Code Online (Sandbox Code Playgroud)

如果问题仍然存在指这个这个askUbuntu.