coredump相关内容
核心转储仅收集进程空间,而不收集为进程间通信创建的共享内存。如何使核心转储也包含正在运行的进程的共享内存? 推荐答案 在/proc/PID/coredump_filter中设置核心文件筛选器http://man7.org/linux/man-pages/man5/core.5.html: 控制将哪些映射写入核心转储 Since kernel 2.6.23, the L
..
我有一个无法解决的奇怪问题.请帮忙! 该程序是一个在 ARM Linux 机器上运行的多线程 c++ 应用程序.最近我开始长期测试它,有时它会在 1-2 天后崩溃,如下所示: *** 检测到 glibc **/root/client/my_program: free(): invalid pointer: 0x002a9408 *** 当我打开核心转储时,我看到主线程似乎有一个损坏的堆栈
..
..
我正在设置 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
..
HPUX 上可用的 GDB 版本有一个名为“packcore"的命令,它创建一个包含核心转储、可执行文件和所有库的 tarball.我发现这在尝试在另一台机器上调试核心转储时非常有用. 在我可能在 Linux 机器上找到的标准版 GDB 中是否有类似的命令? 我正在寻找一个简单的命令,当生产机器上出现问题时,不一定是开发人员的人可以运行该命令. 解决方案 这是一个执行必要步骤的
..
我正在编写一个 python 脚本来自动从 gdb 调试核心转储.我正在尝试打印包含内核数据结构和列表的数据结构(例如 struct list_head).例如结构是这样的: struct my_struct {结构 my_hardware_context 啊;结构 net_device *netdev;结构 pci_dev *pdev;结构 list_head mac_list;…………};
..
..
根据我关于手动生成核心转储文件的问题,我决定深入研究进去弄脏我的手. 我能够构建基本的核心转储结构并将死程序的内存重新放入大 LOAD 部分中的核心转储中.在 GDB 中调试时,我的变量又回来了,这没问题.棘手的部分来了,我如何让 GDB 检索有关程序崩溃时所在位置的信息. 我知道核心转储的注释部分包含此信息(cpu 寄存器等).这是 objdump -h 为“真正的"核心转储提供的内
..
没有深入挖掘 GDB 源代码,我在哪里可以找到有关用于创建核心文件的格式的文档? ELF 规范使核心文件格式保持开放,所以我想这应该是一部分GDB 规范!遗憾的是,我没有从 GNU 的 gdb 文档中找到这方面的任何帮助. 这就是我想要做的事情:将虚拟地址映射到包含正在运行的进程的可执行文件/库中的函数名称.为此,我首先想从核心文件中找出从虚拟地址空间到可执行文件/库名称的映射,然后挖
..
我在 Solaris 中使用 pstack 分析核心转储文件 我还能如何分析来自 solaris 的核心转储? 可以使用哪些命令来做到这一点? 从转储中可以获得哪些其他信息? 解决方案 您可以使用 Solaris 模块化调试器、mdb 或 dbx.mdb 附带 SUNWmdb(或 SUNWmdb x,对于 64 位版本)软件包. 核心文件是您正在运行的进程在崩溃时的
..
我在无法直接访问的远程系统上生成了一个核心文件.我还有来自远程系统的库文件的本地副本,以及崩溃程序的可执行文件. 我想在 gdb 中分析这个核心转储. 例如: gdb path/to/executable path/to/corefile 我的库在当前目录中. 在过去,我看到调试器通过提供选项“-p"来实现这一点.或“-p/=.";所以我的问题是: 在 gdb 中分析核
..
所以我写了错误的代码,偶尔会崩溃......并创建了一个堆栈转储文件. 使用 addr2line 我可以通过将地址解码为 1 来弄清楚程序是如何到达崩溃点的.是否有替代工具可以使用堆栈转储来简化调试?有没有办法在 Insight/Gdb 中加载这些信息? 解决方案 您可以指示 Cygwin 在发生故障时及时启动您的 gdb 调试器.为此,请将 error_start=action 添
..
我正在 gdb 中调试我的程序的核心转储(事后分析).我打开它:gdb [程序名称] [核心名称] 但是,当我尝试检查 STL 向量时,例如打印 vec->size()或者打印 vec->at(0) 我得到了错误 “如果没有调试过程,您将无法做到这一点" 我只是想检查这些容器的内容和大小.有什么方法可以将虚拟进程附加到核心转储 gdb 检查,以便我可以做到这一点? 解
..
我可以在 Linux 上配置进入核心转储的内容吗?我想获得类似 Windows mini-dumps 的东西(应用程序崩溃时有关堆栈帧的最少信息).我知道您可以使用 ulimit 为核心文件设置最大大小,但这不允许我控制核心内部的内容(即不能保证如果我将限制设置为 64kb例如,将转储堆栈的最后 16 页). 另外,如果可能的话,我想以编程方式(从代码)设置它.我查看了 man core 提
..
每次我的应用程序崩溃时,都不会生成核心转储文件.我记得几天前,在另一台服务器上 生成了它.我正在使用 bash 中的屏幕运行应用程序,如下所示: #!/bin/bashulimit -c 无限制虽然是真的;做./服务器;完毕 如您所见,我正在使用 ulimit -c unlimited 如果我想生成核心转储,这很重要,但是当我遇到分段错误时它仍然不会生成它.我怎样才能让它发挥作用? 解决
..
我的程序是这样运行的: exe -p param1 -i param2 -o param3 它崩溃并生成了一个核心转储文件,core.pid. 我想分析核心转储文件 gdb ./exe -p param1 -i param2 -o param3 core.pid 但 GDB 将 EXE 文件的参数识别为 GDB 的输入. 在这种情况下如何分析核心转储文件? 解决方案 你
..
我在 ARM9 板上运行嵌入式应用程序,总闪存大小仅为 180MB.我可以运行 gdb,但是当我运行时 (gdb) 生成核心转储 我收到一个错误 警告:corefile 部分的内存读取失败,1048576 字节位于 0x4156c000.警告:corefile 部分的内存读取失败,0x50c00000 处的 1048576 字节.保存的 corefile core.5546程序正在运
..
我正在尝试在 linux 中创建客户端服务器应用程序.服务器应该向所有连接的客户端发送一个对象.这是它的代码.在此当服务器发送对象时,服务器端一切正常,但客户端服务器立即收到分段错误. 服务器: #include "Question.h"#include #include 使用命名空间标准;#include#include
..
我的公司正在利用 Linux(特别是 CentOS)中的 coredump 功能来追踪一些难以发现的问题.不幸的是,我们有一堆小型虚拟机在有限的 HD 空间下运行,并且由于堆占用的大量空间,完整的核心转储会导致问题. 当发生分段错误时,是否可以让 Linux 转储调用堆栈、线程和局部变量?我尝试仅将转储限制为 50 兆,但似乎并非所有所需的细节都在前 50 兆字节中(ulimit -c 51
..
注意:我正在使用我在使用 libxml-ruby gem 时遇到的段错误来说明问题,但我已经用所述 gem 解决了我的问题.这个问题的真正含义是从 gdb 中查看 Ruby 回溯(即解释器在 Ruby 代码无法处理异常时打印的相同内容),其中包含解释器本身遇到分段错误的核心文件. 我在生成 XML 文档时遇到了一个奇怪的段错误: /railsroot/vendor/isolated/r
..