You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

嵌入式设备core dump空间不足,如何存储至远程机器?

解决嵌入式设备core dump远程存储的方法

方法1:通过GDB直接将core dump传输到远程服务器

如果已经用gdb attach到崩溃进程(或进程崩溃后用gdb加载进程),可利用generate-core-file的标准输出功能,结合管道和ssh直接将core dump发送到远程服务器,无需本地存储:

generate-core-file -o - | ssh user@remote-host "cat > /remote/path/core_dump_$(date +%Y%m%d_%H%M%S)"
  • 确保嵌入式设备已安装ssh客户端,且配置无密码登录远程服务器(通过ssh密钥对),避免交互输入密码导致传输中断
  • /remote/path/替换为远程服务器的实际存储路径,文件名可按需添加进程ID、时间戳等标识

方法2:修改系统core dump规则,崩溃时自动发送到远程

通过修改内核core_pattern配置,让程序崩溃时直接将core dump通过管道传输到远程服务器,无需手动操作gdb:

  1. 开启core dump功能(需root权限):
ulimit -c unlimited
  1. 选择以下一种方式配置core_pattern:

    • 基于ssh的方式:
    echo '|ssh user@remote-host "cat > /remote/path/core-%e-%p-%t"' > /proc/sys/kernel/core_pattern
    

    其中%e为进程名,%p为进程ID,%t为崩溃时间戳,会自动生成带标识的core文件名。

    • 基于netcat(nc)的方式:
      先在远程服务器启动后台监听:
      nc -l -p 1234 > /remote/path/core_dump_$(date +%Y%m%d_%H%M%S) &
      
      再在嵌入式设备配置core_pattern:
      echo '|nc remote-host-ip 1234' > /proc/sys/kernel/core_pattern
      
  2. 配置完成后,后续程序崩溃时,core dump会自动发送到远程服务器指定位置。

注意事项

  • 嵌入式设备需确保预装ssh、nc工具,若未预装需交叉编译后部署
  • 远程服务器需开放对应端口(如nc方式的1234端口),保证网络连通
  • ssh方式务必配置密钥登录,否则崩溃时会因等待密码输入导致传输失败

内容的提问来源于stack exchange,提问作者shekhar singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:32:23