【问题标题】:unable to coredump - embedded linux无法核心转储 - 嵌入式 linux
【发布时间】:2010-12-22 18:02:17
【问题描述】:

我做了 ulimit -c unlimited / 一些数字 proc ... core_pattern 是核心 我的rootfs和应用程序都是调试版本[虽然不是内核] 知道为什么我无法在 kill -SIGABRT/SEGV pid 上获取核心转储

谢谢 Furion。

【问题讨论】:

  • 我在程序中使用了 prctl,现在一切都很好...... :)

标签: embedded-linux coredump


【解决方案1】:

您可以尝试如下使用 gdb 创建核心吗?

$ gdb --pid=1234
(gdb) gcore
Saved corefile core.1234
(gdb) detatch

gdb 不关心设置。 如果你想知道什么是分离。 由于您已将进程附加到 gdb,因此使用 detatch 命令使用 gdb 控件将其分离

【讨论】:

    【解决方案2】:

    检查是否为您的内核启用了核心转储:

    CONFIG_ELF_CORE=y
    

    这里有一些documentation的配置项。

    【讨论】:

    • 我的测试程序能够在同一个机器上进行核心转储。
    【解决方案3】:

    确保进程的当前目录 (getcwd()) 可被进程写入,并且包含足够的空间来保存核心转储文件。

    【讨论】:

    • 我制作了整个 rootfs 777 :) .... 我的测试程序虽然转储了核心...而且我有很多空间...但是我的大胖应用程序是别人写的 [只是维护] 不转储我尝试过 SIGSEGV SIGABRT 等,
    【解决方案4】:

    也许有问题的应用程序本身会改变核心转储大小?

    【讨论】:

    • o 我在 main 中做了 prctl SET_DUMPABLE 发生了一些事情,比如信号处理程序等?检查为正在运行的程序编写了哪些信号处理程序的命令是什么?
    【解决方案5】:

    我在程序中使用 prctl 显式启用核心转储(听起来像是脚本正在禁用核心转储),现在一切都很好

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 2015-05-12
      • 1970-01-01
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多