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

在Linux版Azure App Service中如何查找Core Dump文件?

排查Linux版Azure App Service上.NET Core 6.0应用段错误的Core Dump问题

一、先确认Core Dump的生成配置

Azure App Service容器默认可能限制了Core Dump的生成,先通过SSH执行以下命令检查:

  • 查看当前Core Dump大小限制:

    ulimit -c
    

    若输出为0,说明当前环境禁用了Core Dump生成,可临时开启:

    ulimit -c unlimited
    

    要让配置持久生效,需修改/opt/startup/startup.sh,在启动dotnet xxx.dll的命令前添加ulimit -c unlimited。

  • 检查Core Dump的存储路径:

    cat /proc/sys/kernel/core_pattern
    

    默认路径可能是core或core.%p(带进程ID),但容器默认路径可能无读写权限。可修改到持久化目录/home:

    echo "/home/core.%p" > /proc/sys/kernel/core_pattern
    

    同样,把这条命令加入startup.sh可持久化配置。

二、查找Core Dump文件的位置

  • 优先检查持久化目录/home:这是App Service中唯一重启后不会丢失文件的目录,执行:
    ls -la /home | grep core
    
  • 检查临时目录/tmp:崩溃刚发生时,文件可能暂存于此(重启后会清空):
    ls -la /tmp | grep core
    
  • 全局搜索Core Dump文件:
    find / -name "core*" 2>/dev/null
    
    加2>/dev/null可过滤权限不足的错误提示。

三、分析找到的Core Dump文件

找到文件后,用dotnet-dump工具分析:

  • 安装工具:
    dotnet tool install -g dotnet-dump
    
  • 加载Core Dump并进入分析会话:
    dotnet-dump analyze /path/to/core.file
    
    在会话中,用clrstack查看托管代码调用栈,peek查看内存内容,定位空指针触发的具体位置。

四、补充排查方向

  • 若始终找不到Core Dump,排查容器资源限制:查看App Service的内存使用率指标,确认崩溃时是否存在内存耗尽的情况。
  • 增强.NET日志:在appsettings.json中配置详细的日志级别,捕获崩溃前的托管代码异常,辅助定位根本原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:25:35