銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

clrdbg は vsdbg にリプレースされました

以前このような記事を書いて、先日同じ手順を実行しようとしたらVisual Studio Codeは最早clrdbgをサポートしなくなりました、といった類のメッセージが出てデバッグできなくなっていました。

tech.tanaka733.net

確認してみると、Visual Studio CodeのC#拡張の1.8でclrdbgがvsdbgにリプレースされていました。

omnisharp-vscode/CHANGELOG.md at master · OmniSharp/omnisharp-vscode · GitHub

詳細な手順はこちらにあります。

Attaching to remote processes · OmniSharp/omnisharp-vscode Wiki · GitHub

というわけで先のdocker上のプロセスにリモートデバッグする手順もclrdbgからvsdbgに置き換える必要があります。置き換える必要があるのは、まずdocker上にclrdbgをインストールする部分でvsdbgをインストールするコマンドに置き換えます。

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

さらに、Visual Studio Code側のlaunch.jsonは次のようになります。パスをvsdbgに置き換えるのに加えて、"quoteArgs": falseと設定する必要があります。これを設定しないと勝手に実行するコマンドが"で括られてしまうため、docker execコマンドの引数が正しく解釈されなくなってしまいます。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Docker Remote Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "<PID>",
            "pipeTransport": {
                "pipeProgram": "docker",
                "pipeArgs": [ "exec", "-it", "<name>"],
                "debuggerPath": "/opt/app-root/src/vsdbg/vsdbg",
                "pipeCwd": "${workspaceRoot}",
                "quoteArgs": false
            },
            "sourceFileMap": {
                "/opt/app-root/src": "${workspaceRoot}"
            }
        }
    ]
}

以上を設定すればvsdbgで利用可能になるはずです。なお、vsdbgのライセンスなのですが、おそらくRuntimeのライセンスが該当するものと思われます。

omnisharp-vscode/OpenDebugAD7-License.txt at v1.9.0 · OmniSharp/omnisharp-vscode · GitHub

これを読む限り、Visual StudioやVisual Studio Code以外での利用が禁止されているのと、共有や公開が禁止されているようです*1。そのため、vsdbgを同梱したdocker imageを公開するのも禁止されているような気がします*2。個人的には改善を期待しています*3

*1:解釈に関しては自己責任でお願いします

*2:Dockerfileに指定された手順を記載したDocker imageの公開がこのライセンスのshareやpublicに当たるかはよくわからない。が個人的にライセンスで危い橋は渡りたくないので

*3:Microsoftは今やOpen by defaultだ!と宣言していましたし https://www.forbes.com/sites/adrianbridgwater/2016/11/08/microsoft-is-now-open-by-default-says-xamarin-founder-miguel-de-icaza/#595733e97c40

docs.com に「password」といった単語が含まれるドキュメントをアップロードすると機密情報を含む文書として一般公開できなくなる問題

昨日、Global Azure Boot Campの資料を公開しようとしたら突然こんな画面が出ました。

f:id:tanaka733:20170423224227p:plain

「???」と思い、リンク先のページを見ると、どうも最近のリリースで機密情報保護機能というのがはいって、おせっかいにもdocs.comが機密情報を含んでいると判断すると問答無用で一般に公開できなくなります。これはすでに公開済みの文書にも適用されていて、該当する文書は一般公開が停止されているはずです。

Docs.com flagged this content as possibly containing sensitive information

とりあえずいったんは、リンクを知っている人のみ公開にしてドキュメントを共有したのですが、そうすると検索エンジンからの流入がなくなったり*1とせっかく資料を公開したのにメリットが少なくなります。というわけで、このあたりを調べた顛末をまとめました。

*1:そもそもdocs.comに検索エンジンからの流入が見込めるかは謎

続きを読む

Azure CLI 2.0 で自分のイメージにRHELやCentOSと名付けたら、意図せずMarketplaceからVMが起動される件

最近はまってしまって、意図しない課金が発生したのでMicrosoft supportとやりとり中なのですが、公開できる部分に関してこちらで調査した結果わかったAzure CLIの挙動についてメモしておきます。

続きを読む