问题标签 [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 投票
2 回答
10271 浏览

java - 使用 Java JNI 时是否可以调试核心转储?

我的应用程序主要是 Java,但对于某些计算,使用 C++ 库。我们的环境是在 RedHat 3(即将成为 RedHat 5)上运行的 Java 1.6。

我的问题是 C++ 库不是线程安全的。为了解决这个问题,我们运行多个单线程“工作”进程,并让它们从一个中央工作管理器中完成工作,该管理器也是用 C++ 编写的。我们的 Java 应用程序通过第三方产品调用 C++ Work Manager。

由于各种原因,我们想重新编写 C++ 工作管理器和工作人员。我赞成用 Java 编写它们,在每个 worker 中使用 JNI 来调用 C++ 库。

主要问题是如果 C++ 库核心转储会发生什么。不幸的是,这很常见,我们需要能够查看 C++ 库中的哪一行导致了问题,例如通过检查 GDB 之类的回溯。

我的同事认为分析核心转储是不可能的,因为像 GDB 这样的工具不理解 Java 生成的核心文件。

我希望他们是错的,但在进一步推动我的想法之前,我需要确定一下。

分析从 Java/JNI 生成的核心转储的最佳方法是什么?

0 投票
2 回答
6304 浏览

java - 从应用程序中请求 Java 堆转储(核心转储)

我需要一种从应用程序中请求堆转储的方法

理由:当我遇到特定的错误情况时,我想转储堆,以便我可以看到内存中的内容。

但我想自动执行此操作(例如,当我检测到某些特定情况发生时。或者当看门狗不再收到它的 ping 时。当某些测试失败时)。因此,我需要一种从应用程序本身中转储堆的方法。我似乎无法用 MX bean 的东西找到它。尽管 MX Beans 可以通过监视器和“可拥有的同步器”信息、死锁和争用信息提供非常好的堆栈跟踪,但我似乎找不到请求堆转储的方法。有没有这样的方法?或者通过一些间接的方式,例如这些 JVisualVM 的东西是如何做到的?并且可以告诉 JVM 在 OutOfMemoryExceptions 上转储核心......?

0 投票
3 回答
3328 浏览

c - sqlcxt() 导致分段错误

让我们说明 sqlcxt() 可能导致分段错误的条件,我在 unix 上工作,使用 ProC 连接到 Oracle 数据库的数据库。

我的程序崩溃了,核心文件显示崩溃是由于sqlcxt()函数

...

...

0 投票
4 回答
1490 浏览

coredump - 什么组件实际上转储核心?

我不确定这是 C 库还是其他将内容转储到核心文件并使程序退出的东西。我的意思是 glibc 或 libc 处理 SIGSEGV 并在处理程序函数中创建核心转储?请解释。

0 投票
3 回答
1503 浏览

gdb - 从核心文件恢复程序状态

在任何情况下,是否有可能将程序的状态恢复到生成核心文件期间的状态?

我问的原因是,为了利用 gdb 执行函数等的能力,您需要有一个正在运行的实例。当然应该可以生成相同可执行文件的模拟进程,并将状态设置为核心的内容?

如果不是,对于让我一开始就想这样做的那种情况,还有什么选择?在这种情况下,核心的回溯导致了一个库函数,我想将输入复制到这个函数调用,但其中一个输入是复杂对象,可以很容易地在运行中通过函数调用序列化为字符串实例,但在核心转储中并非如此。

0 投票
7 回答
672 浏览

c - 内存损坏

我正在运行一个小型 c 程序:

基本上我正在释放已经被释放的内存。我认为应该导致核心转储!不是这样吗?

但它正在打印

我在哪里错了吗?

0 投票
14 回答
421701 浏览

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

运行 C 程序时,它显示“(核心转储)”,但我在当前路径下看不到任何文件。

我已经设置并验证了ulimit

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

0 投票
5 回答
68070 浏览

macos - Mac 上的核心转储写在哪里?

在 Mac OS X 上,如果我将 SIGQUIT 发送到我的 C 程序,它会终止,但没有核心转储文件。

您是否必须在 Mac OS X 上手动启用核心转储(如何?),还是将它们写入其他地方而不是工作目录?

0 投票
1 回答
3403 浏览

c - OS X:在不关闭进程的情况下生成核心转储?

我知道当进程崩溃时如何在 OS X 上生成核心转储,但我真正需要做的是附加到进程,生成核心转储,然后恢复该进程(不杀死它)。

很久以前(可能是一年半前)我有 C 代码可以做到这一点......它使用 OS X 内核库连接到一个进程,读取它的所有线程状态和内存,并将其写入磁盘上的 Mach-O 文件。这很好用(这正是我正在寻找的),但现在我似乎无法为我的生活找到该代码。我似乎记得代码与 OS X 系统内部书有些相关,但这只是一个模糊的回忆。

有谁知道我正在谈论的代码并可以指出我吗?如果没有,是否有人知道最好使用一些示例代码来做这件事的好方法?

编辑:这是答案。

资料: http: //osxbook.com/book/bonus/chapter8/core/

将为您完成的程序:http: //osxbook.com/book/bonus/chapter8/core/download/gcore-1.3.tar.gz

0 投票
1 回答
7715 浏览

macos - 如何在 OS X 上启用完整的核心转储?

看起来 OS X (10.6) 默认情况下不会生成编码转储。

使用ulimit -c unlimited不是一个好的解决方案,因为 ulimit 确实在环境变量中设置了限制。这仅适用于从执行 ulimit 的 shell 执行的控制台应用程序。如果你有一个 gui 应用程序,这将不起作用。