在运行C程序时,它说"(core dumped)"但我看不到当前路径下的任何文件.
我已经设置并验证了ulimit
:
ulimit -c unlimited
ulimit -a
Run Code Online (Sandbox Code Playgroud)
我还试图找到一个名为"core"的文件,但没有得到核心转储文件?
任何帮助,我的核心文件在哪里?
我在Linux中有一个进程出现分段错误的进程.如何在失败时告诉它生成核心转储?
我的程序运行如下:
exe -p param1 -i param2 -o param3
Run Code Online (Sandbox Code Playgroud)
它崩溃并生成了一个核心转储文件 core.pid
我想通过分析核心转储文件
gdb ./exe -p param1 -i param2 -o param3 core.pid
Run Code Online (Sandbox Code Playgroud)
但是gdb认识到core.pid
gdb输入的参数.
在这种情况下如何分析核心转储文件?
我想在我的C++应用程序中的特定位置强制执行核心转储.
我知道我可以做以下事情:
int * crash = NULL;
*crash = 1;
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有更干净的方式?
我顺便使用Linux.
是什么SEGV_MAPERR
,它为什么总是想出来SIGSEGV
?
在Mac OS X上,如果我将SIGQUIT发送到我的C程序,它会终止,但是没有核心转储文件.
您是否必须在Mac OS X上手动启用核心转储(如何?),还是将它们写入其他地方而不是工作目录?
我写这段代码来读取3个文件,TM是方阵的大小,LER是一个数组的行数,从最后一个值定义一个非方矩阵(ler/2)*2
然后......代码读取一个具有某种关系的文件,所有都是数字并分配给C [ler].
然后...... C [ler]被分配给B [ler/2] [2].
B [ler/2] [2]中每行的那些坐标分配给a和b.
a和b是矩阵A [tm] [tm]的行和列,其中加1.
我的代码崩溃,我不知道错误是什么.
当我尝试编译它时,编译器gcc -g -o MatSim MatSim.cpp提示:
/usr/include/c++/4.6/iostream:75: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.6/iostream:75: undefined reference to `std::ios_base::Init::~Init()'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
另外,当我尝试编译它时,编译器f77 -o MatSim MatSim.cpp提示:
/tmp/cc6ewlkf.o: In function `__static_initialization_and_destruction_0(int, int)':
MatSim.cpp:(.text+0x17ad4a): undefined reference to `std::ios_base::Init::Init()'
MatSim.cpp:(.text+0x17ad4f): undefined reference to `std::ios_base::Init::~Init()'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
解
主要问题是库问题,使用以下代码编译代码:
g++ -g -o MatSim MatSim.cpp -lstdc
Run Code Online (Sandbox Code Playgroud)
还是行不通?安装库:
sudo apt-get install g++-multilib
Run Code Online (Sandbox Code Playgroud) 是否有可能获得gdb或使用其他工具来创建正在运行的进程的核心转储及其符号表?如果有办法在不终止流程的情况下做到这一点会很棒.
如果可以,你会使用什么命令?(我试图在Linux机器上执行此操作)
每次,我的应用程序崩溃都不会生成核心转储文件.我记得几天前,在另一台服务器上生成了它.我正在使用bash中的屏幕运行应用程序,如下所示:
#!/bin/bash
ulimit -c unlimited
while true; do ./server; done
Run Code Online (Sandbox Code Playgroud)
如你所知,我正在使用ulimit -c unlimited
哪个是重要的,如果我想生成核心转储,但是当我遇到分段错误时它仍然没有生成它.我怎样才能使它工作?