LoginSignup
18
22

More than 5 years have passed since last update.

Visual Studio 2013で親プロセスと子プロセスを同時にデバッグする方法

Posted at

Visual Studio 2013で親プロセスと子プロセスを同時にデバッグする方法について

Visual Studio 2013でデバッグ中のアプリケーションが外部アプリケーションを起動した場合、その外部アプリケーションはデバッグの対象にはなりません。

Visual Studio での 1 つ以上のプロセスのデバッグ

デバッガーは、子プロジェクトが同じソリューション内にある場合でも、デバッグ対象のプロセスによって開始された子プロセスに自動的にアタッチされません。 子プロセスをデバッグするには:
子プロセスが開始された後、そのプロセスにアタッチします。
または
デバッガーの新しいインスタンスで子プロセスが自動的に開始されるように Windows を構成します。

上記のプロセスアタッチ方式及びレジストリ設定方式はデバッグ時の操作が煩雑となりますが、Microsoft Child Process Debugging Power Tool拡張機能を使用すると、複数のプロセスで構成されるシステムのデバッグをシームレスに行うことが出来ます。

Microsoft Child Process Debugging Power Toolによるデバッグ方法

概要

下記構成のプログラムにて親プロセスと子プロセスの同時デバッグを行います。
構成1.png

MainForm.cs
using System.Diagnostics;
using System.Windows.Forms;

namespace MainForm
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void btnExecuteSubForm_Click(object sender, System.EventArgs e)
        {
            Process.Start(new ProcessStartInfo("SubForm.exe"));
        }
    }
}
SubForm.cs
using System.Windows.Forms;

namespace SubForm
{
    public partial class SubForm : Form
    {
        public SubForm()
        {
            InitializeComponent();
        }
    }
}

デバッグ手順

  1. Microsoft Child Process Debugging Power Tool拡張機能をインストールします。
  2. [デバッグ(D)]→[その他のデバッグ ターゲット]→[Child Process Debugging Settings...]メニューを押下し、Microsoft Child Process Debugging Power Toolを有効化します。
    設定2.PNG

  3. MainForm及びSubFormのプロジェクトのデバッグ設定「ネイティブ コードデバッグを有効にする(T)」をチェックします。
    設定3.PNG

  4. MainFormクラス及びSubFormクラスのコンストラクタにブレークポイントを設定します。
    ブレークポイント1.PNG

  5. F5キーを押下してデバッグ実行を開始し、MainFormクラスのコンストラクタでブレークすることを確認します。
    MainForm11.PNG

  6. F5キーを押下してデバッグを続行し、SubForm起動ボタンを押下します。
    MainForm2.PNG

  7. SubForm.exeが起動し、SubFormクラスのコンストラクタでブレークすることを確認します。
    SubForm2.PNG

18
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
22