You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过SSH在Visual Studio 2019中调试远程Ubuntu服务器上的.NET Core应用时出现操作取消异常的问题排查

解决VS2019通过SSH附加远程Ubuntu .NET Core进程时的「Operation was canceled」问题

我之前也碰到过几乎一模一样的情况,折腾了好几天才找到几个有效的排查方向,你可以逐一试试:

  • 确保远程调试组件vsdbg和VS版本严格匹配
    这是最容易踩坑的点!VS2019不同版本对应的vsdbg版本必须一致,不然就会出现能看到进程但附加失败的情况。你可以在远程Ubuntu服务器上重新安装对应版本的vsdbg
    比如针对VS16.8.7,执行:

    curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v 16.8.0 -l ~/vsdbg
    

    注意把-v后面的版本号换成对应VS的主版本(16.9.x对应16.9.0,16.10.x对应16.10.0)。安装完成后重启远程应用再试。

  • 确认远程应用是在调试模式下运行
    别大意!如果你的远程应用是用dotnet run --configuration Release启动的,或者设置了ASPNETCORE_ENVIRONMENT=Production环境变量,会自动禁用调试支持。一定要切换到Debug模式启动:

    dotnet run --configuration Debug
    

    同时确保应用生成时包含了调试符号(默认Debug配置会生成,别手动关掉)。

  • 检查SSH隧道与端口权限
    虽然你能通过SSH连接服务器,但调试需要的动态端口可能被Ubuntu防火墙拦截。可以临时关闭防火墙测试:

    sudo ufw disable
    

    如果关闭后能正常附加,就需要把VS调试用到的端口(通常是4022、4023,不同VS版本略有差异)加入防火墙白名单。另外,在VS的「附加进程」窗口,务必确认选择的是SSH连接,而不是其他远程连接类型。

  • 重置VS的远程连接缓存
    VS有时候会缓存旧的远程配置,导致连接异常。你可以删除以下路径的缓存文件:

    C:\Users\<你的Windows用户名>\AppData\Local\Microsoft\VisualStudio\<VS版本号>\RemoteConnections
    

    删除后重启VS,重新配置SSH连接再尝试附加。

  • 用命令行调试工具排查细节
    如果以上方法都无效,直接在远程服务器上用vsdbg命令行尝试附加进程,能看到更详细的错误日志:

    ~/vsdbg/vsdbg --attach <你的应用进程ID> --interpreter=mi
    

    这里的进程ID可以用ps aux | grep <应用名>获取,命令执行后的输出会告诉你具体哪里出了问题,比如符号加载失败、权限不足等。

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

火山引擎 最新活动