相关疑难解决方法(0)

核心转储,但核心文件不在当前目录中?

在运行C程序时,它说"(core dumped)"但我看不到当前路径下的任何文件.

我已经设置并验证了ulimit:

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

我还试图找到一个名为"core"的文件,但没有得到核心转储文件?
任何帮助,我的核心文件在哪里?

c linux coredump

258
推荐指数
12
解决办法
34万
查看次数

如何用gdb分析程序的核心转储文件?

我的程序运行如下:

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.pidgdb输入的参数.

在这种情况下如何分析核心转储文件?

linux debugging gdb coredump

140
推荐指数
6
解决办法
42万
查看次数

使用来自Cygwin可执行文件的stackdump

所以我编写了偶尔崩溃的错误代码......并创建了一个stackdump文件.

使用addr2line我可以通过解码一个地址来弄清楚程序如何到达崩溃点.是否有替代工具可以使用堆栈转储简化调试?有没有办法在Insight/Gdb中加载此信息?

debugging cygwin gdb coredump insight

24
推荐指数
1
解决办法
2万
查看次数

如何分析coredump的内存泄漏

我想分析核心文件分析中的内存泄漏.

我编写了示例代码来注入内存泄漏并使用gcore命令生成核心文件.

#include <stdlib.h>
#include <unistd.h>
void fun()
{
  int *ptr = new int(1234);
}
int main()
{
  int i=0;
  while(i++<2500)
  {
    fun();
}
sleep(360);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

找到进程ID

ayadav@ajay-PC:~$ ps -aef |grep over  
ajay      8735  6016  0 12:57 pts/2    00:00:00 ./over  
ayadav    8739  4659  0 12:57 pts/10   00:00:00 grep over  
Run Code Online (Sandbox Code Playgroud)

并生成核心

ayadav@ajay-PC:~$ sudo gcore 8735
[sudo] password for ayadav:
0x00007fbb7dda99a0 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:81
81      ../sysdeps/unix/syscall-template.S: No such file or directory.
Saved corefile core.8735
Run Code Online (Sandbox Code Playgroud)

我已经从核心文件中找到了常见的模式,如下所示(在stackoverflow上建议另一个线程有没有办法找到进程的哪个部分使用了大部分内存,只查看生成的核心文件?)

ayadav@ajay-PC:~$ …
Run Code Online (Sandbox Code Playgroud)

c coredump gcore

12
推荐指数
1
解决办法
1万
查看次数

运行时出现分段错误,但调试成功

我遇到了有线分段故障.我正在使用Eclipse CDT在C中开发一个软件.当在终端上运行我的程序(Ubuntu 10,64bits)时,它只报告"分段错误".但是,当我在Eclipse中使用gdb进行调试时,它会结束并且结果是正确的.

我知道分段错误可能有很多原因.我很抱歉我无法显示我的代码,因为我不知道问题出在哪里......

但是有人可以帮助我吗,有没有可能发生的情况就像我的情况一样:终端上的分段故障,而调试时却很好?非常感谢.


谢谢,所有.我会花一些时间学习valgrind.我只是通过realloc()替换malloc()来修复bug.呼叫之后是两个memcpy.这是什么原因?这是代码段:

bwa_seq_t *merge_seq (bwa_seq_t *s1, bwa_seq_t *s2) {
  ubyte_t *seq1, *seq2, *tmp;
  if (!s1 || !s2)
    return 0;
  seq1 = s1->seq;
  seq2 = s2->seq;
  tmp = (ubyte_t*) calloc (sizeof(ubyte_t), (s2->len + s1->len + 1));
  memcpy(tmp, seq1, sizeof(ubyte_t) * s1->len);
  memcpy(&tmp[s1->len], seq2, sizeof(ubyte_t) * s2->len);
  s1->len += s2->len;
  tmp[s1->len] = '\0';
  s1->seq = tmp;
  return s1;
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙解释一下原因吗?

c segmentation-fault

5
推荐指数
2
解决办法
8819
查看次数

分段故障(核心转储)

当我尝试运行它时,我收到了分段错误(核心转储).它完美编译,但我得到错误,我不知道为什么.我试图以所有可能的方式编辑我的代码,但我仍然收到此错误.我已经没有想法了.任何帮助都会很棒.谢谢!

    unsigned short *reg = NULL;

    int byte;
    int i;
    for (byte = 0; byte < num_bytes; byte++){
        unsigned int next_byte = (unsigned int) message[byte];
        crc_byte(reg, key, next_byte);
    }

    for (i = 0; i < 16; i++){
        crc_bit(reg, key, 0);
    }

    return *reg;
}
Run Code Online (Sandbox Code Playgroud)

c

1
推荐指数
1
解决办法
4万
查看次数

标签 统计

c ×4

coredump ×4

debugging ×2

gdb ×2

linux ×2

cygwin ×1

gcore ×1

insight ×1

segmentation-fault ×1