Ubuntu 22.04下VS Code调试.NET 6遇0x80131c3c错误求助
解决Ubuntu 22.04 LTS下VS Code调试.NET 6程序时“Unable to attach to CoreCLR. Unknown Error: 0x80131c3c”的问题
针对你遇到的调试报错(终端dotnet build/dotnet run可正常执行),可以尝试以下针对性解决步骤:
检查并修正launch.json配置
确认调试配置文件launch.json的正确性:- 确保
program字段指向编译后的正确DLL路径,例如:"program": "${workspaceFolder}/bin/Debug/net6.0/YourProjectName.dll" - 验证
type为coreclr、request为launch,避免误用attach模式导致的附加失败 - 若配置混乱,可直接删除
.vscode/launch.json,重启VS Code后让其自动生成默认调试配置
- 确保
调整系统ptrace权限限制
Ubuntu默认的ptrace安全限制可能阻止调试器附加到CoreCLR进程:- 临时生效:执行
sudo sysctl -w kernel.yama.ptrace_scope=0,之后重新尝试调试 - 永久生效:编辑
/etc/sysctl.d/10-ptrace.conf,将kernel.yama.ptrace_scope = 1修改为0,保存后重启系统
- 临时生效:执行
更新.NET调试相关工具
确保调试依赖组件是最新状态:- 执行
dotnet tool update -g dotnet-dump和dotnet tool update -g dotnet-counters,更新全局调试工具 - 在VS Code扩展面板中,检查C#扩展(OmniSharp)是否安装了完整的调试组件,若有缺失则触发自动安装
- 执行
清理VS Code缓存与本地配置
残留的缓存或配置可能引发兼容性问题:- 删除VS Code用户配置目录:
rm -rf ~/.config/Code - 备份工作区
.vscode目录后删除,重新打开项目让VS Code重建配置
- 删除VS Code用户配置目录:
验证.NET SDK与Runtime版本一致性
确保编译和调试使用的.NET版本统一:- 执行
dotnet --list-sdks和dotnet --list-runtimes,确认.NET 6的SDK和Runtime版本匹配 - 在项目的
.csproj文件中明确指定<TargetFramework>net6.0</TargetFramework>,避免版本混淆
- 执行
内容的提问来源于stack exchange,提问作者Paulo
相关产品推荐
相关产品推荐

