Visual Studio 2022远程调试 Ubuntu Docker中的 .net core应用程序
Visual Studio 2022远程调试 Ubuntu Docker中的 .net core应用程序
在国内的服务器上进行远程调试还是比较麻烦的,因为我们没办法正常通过Curl获取到VsDbg包或者下载极其缓慢,需要挂上梯子才能正常下载。下边,我就带大家一步一步的重现问题,以及我解决该问题的方法。
步骤还原
第一步:点击菜单栏中的调试
第二部:附加到进程
第三步:选择要调试服务所在的Docker镜像
第四步:找到 dotnet进程并附加
然后,我们就得到了这个错误提示
或者
出现这个代表容器在下载必要的vsdbg包,但由于包的服务器在国外,是很难下载下来的,以至于会卡死在这样界面。所有接下来需要我们手动安装vsdbg包。
首先,先进入部署了asp.net的容器
docker exec -it [容器id] /bin/bash
查看容器内进程
docker top 容器id
可以发现容器正在下载vsdbg包
当时使用vs2022附近容器时,你会发现/root/目录下多了.vs-debugger文件,这个文件下有 GetVsDbg.sh 和文件夹vs2022,我们打开GetVsDbg.sh文件,将关于下载部分代码给注释了
download()
{
if [ "$__UseZip" = false ]; then
vsdbgFileExtension=".tar.gz"
else
echo "Warning: Version '${__VsDbgMetaVersion}' is only avaliable in zip."
vsdbgFileExtension=".zip"
fi
vsdbgCompressedFile="vsdbg-${__RuntimeID}${vsdbgFileExtension}"
#注释这一部分代码
#target="$(echo "${__VsDbgVersion}" | tr '.' '-')"
#url="https://vsdebugger.azureedge.net/vsdbg-${target}/${vsdbgCompressedFile}"
#check_internet_connection "$url"
#echo "Downloading ${url}"
#if hash wget 2>/dev/null; then
# wget -q "$url" -O "$vsdbgCompressedFile"
#elif hash curl 2>/dev/null; then
# curl -s "$url" -o "$vsdbgCompressedFile"
#fi
#if [ $? -ne 0 ]; then
# echo
# echo "ERROR: Could not download ${url}"
# exit 1;
#fi
#到这里
__VsdbgCompressedFile=$vsdbgCompressedFile
}
使用梯子将这个连接 https://vsdebugger.azureedge.net/vsdbg-17-7-10808-2/vsdbg-linux-x64.tar.gz
下载下来得到vsdbg-linux-x64.tar.gz
文件。
使用拷贝命令将文件拷贝到容器的/root/.vs-debugger/vs2022/下
docker cp vsdbg-linux-x64.tar.gz 容器id:/root/.vs-debugger/vs2022/
拷贝成功如下
Successfully copied 66.9MB to 容器id:/root/.vs-debugger/vs2022/
拷贝完毕后在容器输入
/bin/sh "/root/.vs-debugger/GetVsDbg.sh" -v vs2022 -l "/root/.vs-debugger/vs2022" -a "/remote_debugger"
#成功后会出现如下信息
Info: Previous installation at '/root/.vs-debugger/vs2022' not found
Info: Using vsdbg version '17.7.10808.2'
Using arguments
Version : 'vs2022'
Location : '/root/.vs-debugger/vs2022'
SkipDownloads : 'false'
LaunchVsDbgAfter : 'false'
RemoveExistingOnUpgrade : 'true'
Info: Using Runtime ID 'linux-x64'
Info: Successfully installed vsdbg at '/root/.vs-debugger/vs2022'
#出现版本信息,也能证明成功
cat /root/.vs-debugger/vs2022/success.txt /root/.vs-debugger/vs2022/version.txt
17.7.10808.2
17.7.10808.2 commit:5bf8f05a9c75ab378bb111e5d3112f64e5d8b085
接下来可以进行远程调试了
成功进入断点
到此,我们就能愉快的进行调试了。