在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/null2>/dev/null可过滤权限不足的错误提示。
三、分析找到的Core Dump文件
找到文件后,用dotnet-dump工具分析:
- 安装工具:
dotnet tool install -g dotnet-dump - 加载Core Dump并进入分析会话:
在会话中,用dotnet-dump analyze /path/to/core.fileclrstack查看托管代码调用栈,peek查看内存内容,定位空指针触发的具体位置。
四、补充排查方向
- 若始终找不到Core Dump,排查容器资源限制:查看App Service的内存使用率指标,确认崩溃时是否存在内存耗尽的情况。
- 增强.NET日志:在
appsettings.json中配置详细的日志级别,捕获崩溃前的托管代码异常,辅助定位根本原因。
内容的提问来源于stack exchange,提问作者Iain
相关产品推荐
相关产品推荐

