coredump相关内容

使用运行进程的共享内存收集核心转储

核心转储仅收集进程空间,而不收集为进程间通信创建的共享内存。如何使核心转储也包含正在运行的进程的共享内存? 推荐答案 在/proc/PID/coredump_filter中设置核心文件筛选器http://man7.org/linux/man-pages/man5/core.5.html: 控制将哪些映射写入核心转储 Since kernel 2.6.23, the L ..
发布时间:2022-05-18 09:37:09 服务器开发

c++ 程序核心转储中的无限中止()

我有一个无法解决的奇怪问题.请帮忙! 该程序是一个在 ARM Linux 机器上运行的多线程 c++ 应用程序.最近我开始长期测试它,有时它会在 1-2 天后崩溃,如下所示: *** 检测到 glibc **/root/client/my_program: free(): invalid pointer: 0x002a9408 *** 当我打开核心转储时,我看到主线程似乎有一个损坏的堆栈 ..
发布时间:2022-01-25 13:02:43 服务器开发

Coredump 被截断

我正在设置 ulimit -c 无限制. 而在 c++ 程序中我们正在做的事情 struct rlimit corelimit;if (getrlimit(RLIMIT_CORE, &corelimit) != 0) {返回-1;}corelimit.rlim_cur = RLIM_INFINITY;corelimit.rlim_max = RLIM_INFINITY;if (setrlim ..
发布时间:2022-01-20 20:49:00 服务器开发

如何轻松打包分析核心转储所需的库(即packcore)

HPUX 上可用的 GDB 版本有一个名为“packcore"的命令,它创建一个包含核心转储、可执行文件和所有库的 tarball.我发现这在尝试在另一台机器上调试核心转储时非常有用. 在我可能在 Linux 机器上找到的标准版 GDB 中是否有类似的命令? 我正在寻找一个简单的命令,当生产机器上出现问题时,不一定是开发人员的人可以运行该命令. 解决方案 这是一个执行必要步骤的 ..
发布时间:2022-01-20 20:48:46 服务器开发

核心转储说明部分

根据我关于手动生成核心转储文件的问题,我决定深入研究进去弄脏我的手. 我能够构建基本的核心转储结构并将死程序的内存重新放入大 LOAD 部分中的核心转储中.在 GDB 中调试时,我的变量又回来了,这没问题.棘手的部分来了,我如何让 GDB 检索有关程序崩溃时所在位置的信息. 我知道核心转储的注释部分包含此信息(cpu 寄存器等).这是 objdump -h 为“真正的"核心转储提供的内 ..
发布时间:2022-01-20 20:44:28 其他开发

ELF 核心文件格式

没有深入挖掘 GDB 源代码,我在哪里可以找到有关用于创建核心文件的格式的文档? ELF 规范使核心文件格式保持开放,所以我想这应该是一部分GDB 规范!遗憾的是,我没有从 GNU 的 gdb 文档中找到这方面的任何帮助. 这就是我想要做的事情:将虚拟地址映射到包含正在运行的进程的可执行文件/库中的函数名称.为此,我首先想从核心文件中找出从虚拟地址空间到可执行文件/库名称的映射,然后挖 ..
发布时间:2022-01-20 20:42:54 其他开发

Solaris 核心转储分析

我在 Solaris 中使用 pstack 分析核心转储文件 我还能如何分析来自 solaris 的核心转储? 可以使用哪些命令来做到这一点? 从转储中可以获得哪些其他信息? 解决方案 您可以使用 Solaris 模块化调试器、mdb 或 dbx.mdb 附带 SUNWmdb(或 SUNWmdb x,对于 64 位版本)软件包. 核心文件是您正在运行的进程在崩溃时的 ..
发布时间:2022-01-20 20:34:45 其他开发

在 Linux 上的 gdb 中加载核心文件时,如何在目录前面添加库路径

我在无法直接访问的远程系统上生成了一个核心文件.我还有来自远程系统的库文件的本地副本,以及崩溃程序的可执行文件. 我想在 gdb 中分析这个核心转储. 例如: gdb path/to/executable path/to/corefile 我的库在当前目录中. 在过去,我看到调试器通过提供选项“-p"来实现这一点.或“-p/=.";所以我的问题是: 在 gdb 中分析核 ..
发布时间:2022-01-20 20:33:41 服务器开发

使用 Cygwin 可执行文件中的堆栈转储

所以我写了错误的代码,偶尔会崩溃......并创建了一个堆栈转储文件. 使用 addr2line 我可以通过将地址解码为 1 来弄清楚程序是如何到达崩溃点的.是否有替代工具可以使用堆栈转储来简化调试?有没有办法在 Insight/Gdb 中加载这些信息? 解决方案 您可以指示 Cygwin 在发生故障时及时启动您的 gdb 调试器.为此,请将 error_start=action 添 ..
发布时间:2022-01-20 20:32:07 其他开发

GDB C++ - 在查看核心转储时检查 STL 容器?

我正在 gdb 中调试我的程序的核心转储(事后分析).我打开它:gdb [程序名称] [核心名称] 但是,当我尝试检查 STL 向量时,例如打印 vec->size()或者打印 vec->at(0) 我得到了错误 “如果没有调试过程,您将无法做到这一点" 我只是想检查这些容器的内容和大小.有什么方法可以将虚拟进程附加到核心转储 gdb 检查,以便我可以做到这一点? 解 ..
发布时间:2022-01-20 20:29:07 C/C++开发

最小核心转储(仅堆栈跟踪 + 当前帧)

我可以在 Linux 上配置进入核心转储的内容吗?我想获得类似 Windows mini-dumps 的东西(应用程序崩溃时有关堆栈帧的最少信息).我知道您可以使用 ulimit 为核心文件设置最大大小,但这不允许我控制核心内部的内容(即不能保证如果我将限制设置为 64kb例如,将转储堆栈的最后 16 页). 另外,如果可能的话,我想以编程方式(从代码)设置它.我查看了 man core 提 ..
发布时间:2022-01-20 20:10:36 服务器开发

未生成核心转储文件

每次我的应用程序崩溃时,都不会生成核心转储文件.我记得几天前,在另一台服务器上 生成了它.我正在使用 bash 中的屏幕运行应用程序,如下所示: #!/bin/bashulimit -c 无限制虽然是真的;做./服务器;完毕 如您所见,我正在使用 ulimit -c unlimited 如果我想生成核心转储,这很重要,但是当我遇到分段错误时它仍然不会生成它.我怎样才能让它发挥作用? 解决 ..
发布时间:2022-01-20 19:49:33 服务器开发

使用 GDB 生成核心转储文件时如何限制其大小

我在 ARM9 板上运行嵌入式应用程序,总闪存大小仅为 180MB.我可以运行 gdb,但是当我运行时 (gdb) 生成核心转储 我收到一个错误 警告:corefile 部分的内存读取失败,1048576 字节位于 0x4156c000.警告:corefile 部分的内存读取失败,0x50c00000 处的 1048576 字节.保存的 corefile core.5546程序正在运 ..
发布时间:2022-01-17 14:17:41 服务器开发

是否可以获得仅包含调用堆栈、线程和局部变量的 Linux coredump?

我的公司正在利用 Linux(特别是 CentOS)中的 coredump 功能来追踪一些难以发现的问题.不幸的是,我们有一堆小型虚拟机在有限的 HD 空间下运行,并且由于堆占用的大量空间,完整的核心转储会导致问题. 当发生分段错误时,是否可以让 Linux 转储调用堆栈、线程和局部变量?我尝试仅将转储限制为 50 兆,但似乎并非所有所需的细节都在前 50 兆字节中(ulimit -c 51 ..
发布时间:2022-01-12 16:32:28 服务器开发

在 Ruby 解释器段错误之后,是否可以从 corefile 中获取 Ruby 回溯?

注意:我正在使用我在使用 libxml-ruby gem 时遇到的段错误来说明问题,但我已经用所述 gem 解决了我的问题.这个问题的真正含义是从 ​​gdb 中查看 Ruby 回溯(即解释器在 Ruby 代码无法处理异常时打印的相同内容),其中包含解释器本身遇到分段错误的核心文件. 我在生成 XML 文档时遇到了一个奇怪的段错误: /railsroot/vendor/isolated/r ..
发布时间:2022-01-12 16:20:24 其他开发