次の方法で共有


Visual Studio でのデザイン時のデバッグ (C#、C++/CLI、Visual Basic、F#)

アプリの実行中ではなくデザイン時にコードをデバッグするには、[ イミディエイト ] ウィンドウを使用できます。

宣言型データ バインディング シナリオなど、XAML デザイナーからアプリの背後にある XAML コードをデバッグするには、 Debug>Attach to Process を使用できます。

イミディエイト ウィンドウを使用する

Visual Studio イ ミディエイト ウィンドウを使用すると、アプリを実行せずに関数またはサブルーチンを実行できます。 関数またはサブルーチンにブレークポイントが含まれている場合、Visual Studio はブレークポイントで中断します。 その後、デバッガー ウィンドウを使用して、プログラムの状態を調べることができます。 この機能は、 デザイン時のデバッグと呼ばれます。 詳細については、「イミディエイト ウィンドウの使用」を参照してください。

次の例は Visual Basic にあります。 C#、F#、および C++/CLI アプリでは、デザイン時に イミディエイト ウィンドウを使用することもできます。 C++/CLI の場合は、/clr オプションを指定せずにコンパイルし、イミディエイト ウィンドウを使用します。

  1. 次のコードを空の Visual Basic コンソール アプリに貼り付けます。

    Module Module1
    
        Sub Main()
            MySub()
        End Sub
    
        Function MyFunction() As Decimal
            Static i As Integer
            i = i + 1
            Return i
        End Function
    
        Sub MySub()
            MyFunction()
    
        End Sub
    End Module
    
  2. End 関数にブレークポイントを設定します。

  3. デバッグ>Windows>Immediate を選択してイミディエイト ウィンドウを開きます。 ウィンドウに「 ?MyFunction 」と入力し、 Enter キーを押します。

    ブレークポイントがヒットし、ローカル ウィンドウ内の MyFunction の値は 1 です。 アプリが中断モードの間は、呼び出し履歴やその他のデバッグ ウィンドウを調べることができます。

  4. Visual Studio ツール バーの [ 続行 ] を選択します。 アプリが終了し、イミディエイト ウィンドウに 1 が返されます。 まだデザイン モードになっていることを確認します。

  5. イミディエイト ウィンドウに?MyFunctionをもう一度入力し、Enter キーを押します。 ブレークポイントに到達し、ローカル ウィンドウ内の MyFunction の値は 2 です。

  6. [続行] を選択せずに、[イミディエイト] ウィンドウに「?MySub()」と入力し、Enter キーを押します。 ブレークポイントにヒットし、ローカルウィンドウでのMyFunctionの値は3です。 アプリが中断モードの間にアプリの状態を確認できます。

  7. 続行を選択します。 ブレークポイントが再びヒットし、[ローカル] ウィンドウの MyFunction の値が 2 になりました。 イミディエイト ウィンドウは、式が評価され、値がないことを返します。

  8. [ 続行] をもう一度選択します。 アプリが終了し、イミディエイト ウィンドウに 2 が返されます。 まだデザイン モードになっていることを確認します。

  9. イミディエイト ウィンドウの内容をクリアするには、ウィンドウ内を右クリックし、[すべてクリア] を選択します。

XAML デザイナーにアタッチして、デザイン時にカスタム XAML コントロールをデバッグする

  1. Visual Studio でソリューションまたはプロジェクトを開きます。

  2. ソリューション/プロジェクトをビルドします。

  3. デバッグするカスタム コントロールを含む XAML ページを開きます。

    Windows ビルド 16299 以降を対象とする UWP プロジェクトの場合、この手順では UwpSurface.exe プロセスが開始されます。 Windows ビルド 16299 以降を対象とする WPF プロジェクトの場合、この手順では WpfSurface.exe プロセスが開始されます。 Windows ビルド 16299 より前のバージョンの WPF または UWP の場合、この手順では XDesProc.exe プロセスが開始されます。

  4. Visual Studio の 2 番目のインスタンスを開きます。 2 番目のインスタンスでソリューションまたはプロジェクトを開かないでください。

  5. Visual Studio の 2 番目のインスタンスで、[ デバッグ ] メニューを開 き、[プロセスにアタッチ...] を選択します。

  6. プロジェクトの種類 (前の手順を参照) に応じて、使用可能なプロセスの一覧から UwpSurface.exeWpfSurface.exe、または XDesProc.exe プロセスを選択します。

  7. [プロセス にアタッチ ] ダイアログの [ アタッチする ] フィールドで、デバッグするカスタム コントロールの適切なコードの種類を選択します。

    カスタム コントロールが .NET 言語で記述されている場合は、 マネージド (CoreCLR) などの適切な .NET コードの種類を選択します。 カスタム コントロールが C++ で記述されている場合は、[ ネイティブ] を選択します。

  8. [アタッチ] ボタンをクリックして、Visual Studio の 2 番目のインスタンスを アタッチ します。

  9. Visual Studio の 2 番目のインスタンスで、デバッグするカスタム コントロールに関連付けられているコード ファイルを開きます。 ソリューションまたはプロジェクト全体ではなく、ファイルだけを開きます。

  10. 前に開いたファイルに必要なブレークポイントを配置します。

  11. Visual Studio の最初のインスタンスで、デバッグするカスタム コントロールを含む XAML ページを閉じます (前の手順で開いたのと同じページ)。

  12. Visual Studio の最初のインスタンスで、前の手順で閉じた XAML ページを開きます。 これにより、Visual Studio の 2 番目のインスタンスで設定した最初のブレークポイントでデバッガーが停止します。

  13. Visual Studio の 2 番目のインスタンスでコードをデバッグします。