Visual Studio 远程调试Docker 容器内的.Net Core应用

教程所用工具版本为 Visual Studio 2022,其他版本原理与该文档一致。

附加到进程

Visual Studio -> 调试 -> 附加到进程

image-20230601170744880

选择 dotnet 这个进程,点击附加。

第一次附加会加载环境,国内的服务器下载可能很慢。这个时候可以直接使用任务管理器关闭vs。

重复上面的步骤,”附加到进程“弹框里“可用进程”可以看到 wget 下载环境配置的进程,从这里可以拿到下载链接。

获取到 wget 进程的Id,进入容器中,杀死进程,防止本地上传之后文件被覆盖。

kill ID

本地下载环境配置

先将安装环境的脚本从容器中拷贝出来,文件在容器内的路径是 /root/.vs-debugger/GetVsDbg.sh

docker cp app:/root/.vs-debugger/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-{target}/{vsdbgCompressedFile}

这里面有两个变量

  • target

    从上面的语句 target="(echo "{__VsDbgVersion}" | tr '.' '-')" 可以看到 target 就是将 __VsDbgVersion 变量的”.“转成"-",set_vsdbg_version() 方法里面可以看到 Vs2022的对应的版本号为:17.6.10401.3 ,那么target的值为17_6_10401_3

  • vsdbgCompressedFile

    vsdbgCompressedFile="vsdbg-{__RuntimeID}{vsdbgFileExtension}"

    计算后,其中__RuntimeID的值为: linux-x64,vsdbgFileExtension 的值为 .tar.gz

完整的下载链接为:https://vsdebugger.azureedge.net/vsdbg-17-6-10401-3/vsdbg-linux-x64.tar.gz

修改上面的download() 方法

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
}

注释下载的部分,覆盖容器内的配置文件。

在容器内创建目录 /root/.vs-debugger/vs2022,将下载好的文件拷贝到该目录

执行命令配置环境

然后执行

/bin/sh /root/.vs-debugger/GetVsDbg.sh -v vs2022 -l /root/.vs-debugger/vs2022 -a /remote_debugger

即可配置完成。

相同配置的其他容器,可以创建相同的目录,并将文件放到同样的位置,直接执行上面的脚本安装。

参考

Linux安装vsdbg实现远程调试程序

转载请标明出处:Visual Studio 远程调试Docker 容器内的.Net Core应用

作者:Niko

欢迎访问我的主页:vlins.cn

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇