问题标签 [coredump]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
470 浏览

multithreading - 多线程程序的核心转储

我经常使用单线程程序。我从来没有见过多线程程序崩溃,因为我还没有工作过。

两个核心转储之间有什么区别吗?与单线程程序相比,多线程程序的核心转储中是否提供了任何其他信息?

0 投票
2 回答
2195 浏览

c - 创建核心转储时设置退出状态

例如,调用exit(100)会以状态 100 退出应用程序,调用会raise(SIGABRT)在创建核心转储时以状态 134 中止应用程序。但是,如果我想要状态为 100 或任何其他任意值的核心转储怎么办。我怎样才能做到这一点 ?我知道有几个信号会触发核心转储,但它们似乎具有固定的退出状态。

0 投票
2 回答
3001 浏览

c++ - 每个进程可配置的核心转储目录

有没有办法配置为特定进程放置核心转储文件的目录?

我有一个用 C++ 编写的守护进程,我想为其配置核心转储目录。可选地,文件名模式也应该是可配置的。

我知道,但是这会改变全局/proc/sys/kernel/core_pattern的模式和目录结构。

Apache 有指令CoreDumpDirectory——所以这似乎是可能的。

0 投票
2 回答
16827 浏览

linux - Linux 核心转储太大了!

最近我注意到我的应用程序生成的核心转储的大小有所增加。最初,它们只有大约 5MB 大小,包含大约 5 个堆栈帧,现在我有 > 2GB 的核心转储,其中包含的信息与较小的转储没有什么不同。

有什么方法可以控制生成的核心转储的大小?它们不应该至少小于应用程序二进制文件本身吗?

二进制文件以这种方式编译:

  • 使用调试符号在发布模式下编译(即 GCC 中的 -g 编译器选项)。
  • 调试符号被复制到一个
    单独的文件中并从
    二进制文件中删除。
  • 将 GNU 调试符号链接添加到二进制文件中。

在应用程序开始时,有一个调用setrlimit将核心限制设置为无穷大——这是问题所在吗?

0 投票
1 回答
2473 浏览

xcode - 有没有办法用 Xcode 打开(任意)核心转储?

寻找命令行 gdb 的替代方法来检查 OSX 上的核心转储 - 有没有办法让 Xcode 打开带有调试符号的任意核心转储?

0 投票
3 回答
3916 浏览

linux - 我没有得到所有进程的核心转储

我试图得到一个核心转储,所以我使用:

我在后台运行程序,然后将其杀死:

但我只是得到:

并且没有创建核心转储。我对其他程序做了同样的事情并且它有效,那么为什么这对所有程序都不起作用?任何人都可以帮助我吗?

谢谢。(GNU/Linux, Debian 2.6.26)

0 投票
4 回答
14366 浏览

c - C 代码的核心转储是什么意思?

核心转储的扩展名是什么意思以及如何读取核心转储文件?就像我在文本编辑器中打开文件一样,我得到垃圾值。

注意:它的扩展类似于.2369

0 投票
4 回答
582 浏览

c++ - Perl 系统调用导致核心转储但 $? 保持为零

我有一个 Perl 脚本(在 VirtualBox 中的 Xubuntu Lucid Lynx 上运行),它包含几个 C/C++ 二进制文件,将其中一个的输入提供给另一个。其中一条线通常包括:

对于某些输入文件,代码会导致核心转储,但两者$ret_val$ret_code分别为 0 和 ""。当我运行它时,我可以看到错误滚动,但我似乎无法以编程方式“捕获”它。我怎么能这样做?目的是错误地从输入中删除一些行并重试解析。

以下是错误:

返回的值为:

有问题的实际代码片段:

0 投票
2 回答
803 浏览

exception - 通过 Wine 强制核心转储忽略 SEH

我想从程序中强制执行核心转储(或以其他方式在特定时间查看其内存)。但是有几个问题:

  • 我在 wine 下运行它(不能通过 winedbg 运行,因为应用程序检测到它)
  • 应用程序使用异常/SEH/其他处理程序,它们捕获非标准事件
  • 即使附加 strace 也会阻止程序工作
  • 我想四处看看,所以没有可以打印的特定区域
  • 嗯...我没有来源

我尝试将代码更改为:

以及一些不是真正指令的随机内容——SEH 介入并拯救了应用程序。

如何获取信息?我需要特定时间的内存映像,并且可以修补它发生的确切位置。

0 投票
1 回答
1194 浏览

linux - 如何在 montavista linux 上为守护进程启用核心转储?

我不确定 stackoverflow 是否是正确的地方,但由于这是用于嵌入式开发,我需要核心转储,这也是用于开发的,我认为这是最好的地方。

我试图以这样一种方式启用全局核心转储,即每次程序以产生核心的方式崩溃时,它都会被写入/foo/bar/core。每次程序崩溃时,它都会覆盖旧的核心文件。目前我已经尝试了以下方法:

将此添加到limits.conf

将此添加到 sysctl.conf:

这没有用。如果我启动系统,执行 a sysctl -pulimit -c unlimited然后手动重新启动进程(没有 init 脚本),我会在 /foo/bar 中获得一个核心文件,但它附加了 PID。任何帮助将不胜感激。