小型嵌入式系统上主要应用程序的核心转储

时间:2019-03-28 23:36:25

标签: linux arm coredump

我试图将segfaulting主应用程序的核心转储到Linux上运行的小型嵌入式系统上。主应用程序实质上处理设备的完整执行和功能,并在收到SIGSEGV信号后使系统重新启动。

我已经确保:

  • 核心转储的大小不受限制
    • ulimit -c unlimited
  • 设置了具有足够可用空间(已安装SD卡)的可写目录的输出路径
    • sysctl -w kernel.core_pattern='/path/to/dir/core_%e.%p'
  • 我有权读取和执行二进制文件

我试图像这样丢弃虚拟进程的核心:

sleep 10 &
killall -SIGSEGV sleep

它可以按预期工作,在所需位置生成该过程的核心转储。

但是,主应用程序不会创建核心转储,而只会导致系统重新引导。我已经尝试通过telnet提供的shell手动对应用程序进行segfault调试,以及远程利用堆栈缓冲区溢出(这是我要研究的问题)。

由于这是一个小型嵌入式系统,因此我无法访问gdb,ptrace,pstack等常见实用程序。

这里是否有任何变通办法,可以让我在仍在运行时或收到SIGSEGV信号后查看进程堆栈?

0 个答案:

没有答案