Visual Studio 2019のC ++用のアウトプロセスデバッガー

Visual Studio 2019 Preview 1では、リソースを集中的に使用するコンポーネントをホストするために外部64ビットプロセスを使用するC ++用の改善されたデバッガーが導入されています。 以前にC ++アプリケーションのデバッグ中にメモリの問題があった場合、これらの問題はVisual Studio 2019で大幅に解決されるはずです。



以下はGears of War 4のデバッグの実用的な例です。







背景



フィードバックを提供し、C ++開発者は、複雑なC ++アプリケーションのデバッグ中に、メモリ使用量が多いことに関連する問題についてよく話しました。 大量のメモリ消費は、大量のシンボルデータに関連付けられています。これらのデータは、デバッガがデバッガウィンドウに読み込んで表示する必要があります。 さらに、この情報の量は仕事中に絶えず増加しています。 最終的に、メモリ不足によりVisual Studioプロセスが失敗する場合があります。



この問題を軽減するために、Visual Studio 2017で大幅な改善を行いました。 たとえば、アップデート15.6では/ Debug:fastlinkのメモリ最適化が導入され、デバッガーによるメモリ消費が30%削減されました。 Visual Studio 2019ではこの問題の回避に努めているため、メモリを集中的に使用するコンポーネントを別の64ビットプロセスに移動しました。



ケーススタディ:Gears of War 4のデバッグ



社内および社外のパートナーチームと緊密に連携して、デバッガーに加えた変更が実際の大規模なアプリケーションで検証および検証されるようにしました。 以下では、cdpvからビデオを複製しました。 The Coalitionが開発したGears of War 4をデバッグする際のVisual Studio 2017とVisual Studio 2019のメモリ使用量の並列比較を示しています。 Visual Studio 2017のメモリ使用量は、ゲームコードを表示して変数を確認してから数分後に1.3 GBに増加します。 Visual Studio 2019は、同じシナリオでより優れたメモリ使用量を提供します。シンボルデータは64ビットデバッガーワークフローに格納されるため、使用されるメモリ量は約285 MBのままです。







ランタイムでは、今ではすべてがはるかに良く機能します。



サポートされていないシナリオといくつかの既知の問題





インプロセスデバッガーを引き続き使用する必要がある場合は、[ツール]-> [オプション]の[デバッグ]タブに移動し、[外部プロセスでデバッグシンボルを読み込む(ネイティブのみ)]のチェックを外して、機能を無効にできます。






Microsoft Developer Community @msdevruのメンバー、 開発者向けMicrosoft Developerコミュニティのチャネル、および新しいテクノロジに関心のあるすべての人は、この記事の準備に役立ちました。



All Articles