核心转储不起作用

标签 c macos gdb segmentation-fault core

当我运行有段错误的程序时,我收到一条错误消息段错误:11。由于某种原因,我没有收到(核心转储)消息。我尝试运行 shell 命令ulimit -c unlimited,但我仍然收到相同的错误,并且没有说核心转储。我是 GDB 新手,所以我用一个简单的程序尝试了它:

/* coredump.c */
#include <stdio.h>
int main (void) {
  int *point = NULL;
  *point = 0;
  return 0;
}

但是当我编译时使用:

gcc coredump.c -g -o coredump

然后运行它,它仍然显示segfault: 11

它是否仍在我不知道的地方创建核心转储?我希望能够使用gdb coredump core

最佳答案

看这个链接:

选项包括:

  • ulimit -c unlimited(默认 = 0:不生成核心文件)

  • 转储目录必须可写。默认情况下,这是进程的当前目录,但可以通过设置/proc/sys/kernel/core_pattern 进行更改。

  • 在某些情况下,/proc/sys/fs/suid_dumpable 中的内核值可能会阻止生成内核。

  • “man core”用于其他选项

  • find/-name core -print 2>/dev/null 在文件系统中搜索核心文件

假设您正在运行Linux,并且我假设您正在具有写入权限的目录中执行.exe。

所以我的两个最重要的猜测是1)“ulimit -c unlimited”没有被设置,或者被覆盖,或者2)核心文件正在生成,但是去“其他地方”。

以上建议应该有所帮助。请发回您发现的内容!

关于核心转储不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12020484/

相关文章:

xcode - 单击按钮时如何将项目插入 NSTableView 中?

c++ - 尝试将 gdb 与 MPI 一起使用时自动加载被拒绝?

gdb - gdb 似乎缺少一些方便的功能

c - 平面中 2 个点的边界框

c - 何时使用 printf 与 fprintf(stderr)

c - openssl 的链接器和编译器错误

c++ - 如何使用 Eclipse 从 Windows 调试 linux C++ 程序?

c - 8 个皇后 "goto"命令困扰我

c - 对于 TCP 套接字上大于 64KB 的数据,如何使用 MSG_DONTWAIT 标志处理 recv()?

python - pip 在 Mac OS X Mavericks (10.9) 上引发 stdio.h not found 错误