Visual Studio デバッガーで実行中のプロセスへのアタッチAttach to running processes with the Visual Studio debugger

ローカルまたはリモート コンピューターで実行中のプロセスに、Visual Studio デバッガーをアタッチできます。You can attach the Visual Studio debugger to a running process on a local or remote computer. プロセスが実行されると、選択デバッグ > プロセスにアタッチまたはキーを押しますCtrl+Alt +P使用して、Visual Studio で、プロセスにアタッチプロセスにデバッガーをアタッチするためのダイアログ。After the process is running, select Debug > Attach to Process or press Ctrl+Alt+P in Visual Studio, and use the Attach to Process dialog to attach the debugger to the process.

使用することができますプロセスにアタッチをローカルまたはリモート コンピューターで実行中のアプリをデバッグするには、同時に複数のプロセスをデバッグ、Visual Studio で作成されていないアプリをデバッグまたはで Visual Studio から開始していないすべてのアプリをデバッグしますデバッガーをアタッチします。You can use Attach to Process to debug running apps on local or remote computers, debug multiple processes simultaneously, debug apps that weren't created in Visual Studio, or debug any app you didn't start from Visual Studio with the debugger attached. たとえば、デバッガーなしのアプリを実行するいるし、例外が発生すると、アプリを実行しているプロセスにデバッガーをアタッチし、デバッグを開始します。For example, if you're running an app without the debugger and hit an exception, you can then attach the debugger to the process running the app and begin debugging.

Tip

わからないを使用するかどうかプロセスにアタッチデバッグ シナリオのでしょうか。Not sure whether to use Attach to Process for your debugging scenario? 参照してくださいデバッグ シナリオ共通します。See Common debugging scenarios.

ローカル コンピューターで実行中のプロセスにアタッチします。Attach to a running process on your local machine

以前にアタッチしたプロセスにすばやく再アタッチを参照してください。プロセスに再アタッチします。To quickly reattach to a process you attached to previously, see Reattach to a process.

リモート コンピューター上のプロセスをデバッグするを参照してください。リモート コンピューター上のプロセスにアタッチします。To debug a process on a remote computer, see Attach to a process on a remote computer.

ローカル コンピューター上のプロセスにアタッチします。To attach to a process on your local computer:

  1. Visual Studio で、次のように選択しますデバッグ > プロセスにアタッチ(またはキーを押しますCtrl+Alt +。 P) を開く、プロセスにアタッチ ダイアログ ボックス。In Visual Studio, select Debug > Attach to Process (or press Ctrl+Alt+P) to open the Attach to Process dialog box.

    接続の種類に設定する必要があります既定します。Connection type should be set to Default. 接続先ローカル コンピューター名にする必要があります。Connection target should be your local machine name.

    DBG_Basics_Attach_To_ProcessDBG_Basics_Attach_To_Process

  2. 選択可能なプロセス一覧、検索して、プロセスまたはプロセスにアタッチするを選択します。In the Available processes list, find and select the process or processes you want to attach to.

    • プロセスをすばやく選択するには、入力の名前またはの最初の文字、プロセスをフィルターボックス。To quickly select a process, type its name or first letter in the Filter processes box.

    • プロセス名がわからない場合、一覧を参照または参照してくださいデバッグ シナリオ共通のいくつかの一般的なプロセス名。If you don't know the process name, browse through the list, or see Common debugging scenarios for some common process names.

    Tip

    プロセスの開始し、停止中にバック グラウンドで、プロセスにアタッチ実行中のプロセスの一覧が常に最新でないために、ダイアログ ボックスが開いています。Processes can start and stop in the background while the Attach to Process dialog box is open, so the list of running processes may not always be current. 選択することができます更新いつでも現在の一覧を確認します。You can select Refresh at any time to see the current list.

  3. にアタッチフィールドに、デバッグするコードの種類が表示されているかどうかを確認します。In the Attach to field, make sure the type of code you plan to debug is listed. 既定の自動のほとんどの種類のアプリの動作を設定します。The default Automatic setting works for most app types.

    コードの種類を手動で選択します。To select code types manually:

    1. [選択] をクリックします。Click Select.
    2. コードの種類の選択ダイアログ ボックスで、コードの種類をデバッグします。In the Select Code Type dialog box, select Debug these code types.
    3. デバッグするコードの種類を選択します。Select the code types you want to debug.
    4. [OK] を選択します。Select OK.
  4. 選択アタッチします。Select Attach.

Note

デバッグについては、複数のアプリにアタッチできますが、一度に 1 つだけのアプリは、デバッガーでアクティブにします。You can be attached to multiple apps for debugging, but only one app is active in the debugger at a time. 作業中のアプリを設定するには、Visual studioデバッグの場所ツールバーまたはプロセスウィンドウ。You can set the active app in the Visual Studio Debug Location toolbar or Processes window.

リモート コンピューター上のプロセスにアタッチするAttach to a process on a remote computer

リモート コンピューターを選択することも、プロセスにアタッチ ダイアログ ボックスでは、そのコンピューターで実行されている選択可能なプロセスの一覧を表示し、1 つ以上のデバッグのためのプロセスにアタッチします。You can also select a remote computer in the Attach to Process dialog box, view a list of available processes running on that computer, and attach to one or more of the processes for debugging. リモート デバッガー (msvsmon.exe) リモート コンピューターで実行する必要があります。The remote debugger (msvsmon.exe) must be running on the remote computer. 詳細については、次を参照してください。リモート デバッグします。For more information, see Remote debugging.

IIS に配置されている ASP.NET アプリケーションのデバッグに関するより詳細な手順については、次を参照してください。リモート リモート IIS コンピューター上の ASP.NET のデバッグします。For more complete instructions for debugging ASP.NET applications that have been deployed to IIS, see Remote debugging ASP.NET on a remote IIS computer.

リモート コンピューターで実行中のプロセスにアタッチ。To attach to a running process on a remote computer:

  1. Visual Studio で、次のように選択しますデバッグ > プロセスにアタッチ(またはキーを押しますCtrl+Alt +。 P) を開く、プロセスにアタッチ ダイアログ ボックス。In Visual Studio, select Debug > Attach to Process (or press Ctrl+Alt+P) to open the Attach to Process dialog box.

  2. 接続の種類べき既定のほとんどの場合。Connection type should be Default for most cases. 接続のターゲットボックスで、次のメソッドのいずれかを使用して、リモート コンピューターを選択します。In the Connection target box, select the remote computer, using one of the following methods:

    • 次のドロップダウン矢印を選択接続のターゲット、ドロップダウン リストから、コンピューター名を選択します。Select the drop-down arrow next to Connection target, and select the computer name from the drop-down list.

    • コンピューター名を入力、接続のターゲットボックス キーを押しますEnterします。Type the computer name in the Connection target box and press Enter.

      Visual Studio が必要なポートの形式で表示されるコンピューター名に追加されることを確認します <リモート コンピューター名 >: ポート。Verify that Visual Studio adds the required port to the computer name, which appears in the format: <remote computer name>:port

      Note

      リモート コンピューター名を使用して接続できない場合、IP を使用してお試しくださいし、ポートのアドレス (たとえば、 123.45.678.9:4022)。If you can't connect using the remote computer name, try using the IP and port address (for example, 123.45.678.9:4022). 4024 は、Visual Studio 2019 x64 リモート デバッガーの既定のポートです。4024 is the default port for the Visual Studio 2019 x64 remote debugger. その他のリモート デバッガーのポート割り当てでは、次を参照してください。リモート デバッガーのポートの割り当てします。For other remote debugger port assignments, see Remote debugger port assignments.

      Note

      リモート コンピューター名を使用して接続できない場合、IP を使用してお試しくださいし、ポートのアドレス (たとえば、 123.45.678.9:4022)。If you can't connect using the remote computer name, try using the IP and port address (for example, 123.45.678.9:4022). 4022 では、Visual Studio 2017 x64 リモート デバッガーの既定のポートです。4022 is the default port for the Visual Studio 2017 x64 remote debugger. その他のリモート デバッガーのポート割り当てでは、次を参照してください。リモート デバッガーのポートの割り当てします。For other remote debugger port assignments, see Remote debugger port assignments.

    • 選択、検索横に、接続のターゲットボックスを開く、リモート接続 ダイアログ ボックス。Select the Find button next to the Connection target box to open the Remote Connections dialog box. リモート接続 ダイアログ ボックスには、ローカル サブネット上またはコンピューターに直接接続されるすべてのデバイスが一覧表示されます。The Remote Connections dialog box lists all the devices that are on your local subnet or directly attached to your computer. 必要がありますUDP ポート 3702 を開くサーバーにリモート デバイスを検出します。You may need to open UDP port 3702 on the server to discover remote devices. コンピューターを選択し、をクリックし、デバイス選択します。Select the computer or device you want, and then click Select.

    Note

    接続の種類設定は、デバッグ セッション間で保持します。The Connection type setting persists between debugging sessions. 接続のターゲット設定を対象とするとデバッグ接続に成功が発生した場合にのみ、デバッグ セッション間で保持します。The Connection target setting persists between debugging sessions only if a successful debugging connection occurred with that target.

  3. クリックして更新を設定する、選択可能なプロセス一覧。Click Refresh to populate the Available processes list.

    Tip

    プロセスの開始し、停止中にバック グラウンドで、プロセスにアタッチ実行中のプロセスの一覧が常に最新でないために、ダイアログ ボックスが開いています。Processes can start and stop in the background while the Attach to Process dialog box is open, so the list of running processes may not always be current. 選択することができます更新いつでも現在の一覧を確認します。You can select Refresh at any time to see the current list.

  4. 選択可能なプロセス一覧、検索して、プロセスまたはプロセスにアタッチするを選択します。In the Available processes list, find and select the process or processes you want to attach to.

  5. にアタッチフィールドに、デバッグするコードの種類が表示されているかどうかを確認します。In the Attach to field, make sure the type of code you plan to debug is listed. 既定の自動のほとんどの種類のアプリの動作を設定します。The default Automatic setting works for most app types.

    コードの種類を手動で選択します。To select code types manually:

    1. [選択] をクリックします。Click Select.
    2. コードの種類の選択ダイアログ ボックスで、コードの種類をデバッグします。In the Select Code Type dialog box, select Debug these code types.
    3. デバッグするコードの種類を選択します。Select the code types you want to debug.
    4. [OK] を選択します。Select OK.
  6. 選択アタッチします。Select Attach.

Note

デバッグについては、複数のアプリにアタッチできますが、一度に 1 つだけのアプリは、デバッガーでアクティブにします。You can be attached to multiple apps for debugging, but only one app is active in the debugger at a time. 作業中のアプリを設定するには、Visual studioデバッグの場所ツールバーまたはプロセスウィンドウ。You can set the active app in the Visual Studio Debug Location toolbar or Processes window.

場合によって、リモート デスクトップ (ターミナル サービス) セッションでデバッグするときに、選択可能なプロセスリストは、すべての可能なプロセスを表示しません。In some cases, when you debug in a Remote Desktop (Terminal Services) session, the Available processes list won't display all available processes. 制限付きユーザー アカウントを持つユーザーとして Visual Studio を実行している場合、選択可能なプロセスリストは、セッション 0 で実行されているプロセスを表示しません。If you are running Visual Studio as a user who has a limited user account, the Available processes list won't show processes that are running in Session 0. サービスとを含むその他のサーバー プロセスにセッション 0 が使用されるw3wp.exeします。Session 0 is used for services and other server processes, including w3wp.exe. この問題を解決するには、管理者アカウントで Visual StudioVisual Studio を実行するか、ターミナル サービス セッションからではなくサーバー コンソールから Visual StudioVisual Studio を実行します。You can solve the problem by running Visual StudioVisual Studio under an administrator account or by running Visual StudioVisual Studio from the server console instead of a Terminal Services session.

どちらの方法も実行できない場合、3 つ目の方法として、Windows コマンド ラインから vsjitdebugger.exe -p <ProcessId> を実行することによって、プロセスにアタッチできます。If neither of those workarounds is possible, a third option is to attach to the process by running vsjitdebugger.exe -p <ProcessId> from the Windows command line. プロセスの ID を使用するかを調べるtlist.exeします。You can determine the process ID using tlist.exe. tlist.exe を入手するには、WDK と WinDbg のダウンロードに関するページで Windows 用のデバッグ ツールをダウンロードし、インストールします。To obtain tlist.exe, download and install Debugging Tools for Windows, available at WDK and WinDbg downloads.

プロセスに再アタッチします。Reattach to a process

選択してに接続されていたプロセスにすばやく再アタッチできるデバッグ > プロセスに再アタッチ(Shift +Alt+P)。You can quickly reattach to processes that you were previously attached to by choosing Debug > Reattach to Process (Shift+Alt+P). このコマンドを選択すると、デバッガーはすぐにアタッチしようと最後のプロセスにより、前のプロセス ID と一致する最初の試行にアタッチしてかどうか失敗すると、前に一致させることでプロセス名。When you choose this command, the debugger will immediately try to attach to the last processes you attached to by first attempting to match the previous process ID and if that fails, by matching to the previous process name. 一致が見つからない場合、または複数のプロセスは同じ名前を持つ場合、プロセスにアタッチ正しいプロセスを選択するダイアログ ボックスが開きます。If no matches are found, or if several processes have the same name, the Attach to Process dialog box will open so you can select the correct process.

Note

プロセスに再アタッチコマンドは、Visual Studio 2017 以降を使用します。The Reattach to Process command is available starting in Visual Studio 2017.

一般的なデバッグ シナリオCommon debugging scenarios

使用するかどうかを判断するのに役立つプロセスにアタッチとどのようなプロセスにアタッチする、次の表に、詳細な手順へのリンクをいくつかの一般的なデバッグ シナリオでご利用いただけます。To help you determine whether to use Attach to Process and what process to attach to, the following table shows a few common debugging scenarios, with links to more instructions where available. (一覧は、exhaustive されません)。(The list is not exhaustive.)

ユニバーサル Windows アプリ (UWP) アプリのように、アプリの種類によって、プロセス名に直接アタッチしないを使用して、インストール済みアプリ パッケージのデバッグメニュー オプションは、代わりに Visual Studio で (テーブルを参照してください)。For some app types, like Universal Windows App (UWP) apps, you don't attach directly to a process name, but use the Debug Installed App Package menu option in Visual Studio instead (see table).

C++ で記述されたコードにデバッガーをアタッチするには、コードが DebuggableAttributeを生成する必要があります。For the debugger to attach to code written in C++, the code needs to emit DebuggableAttribute. /ASSEMBLYDEBUG リンカー オプションを使ってリンクすると、これを自動的にコードに追加できます。You can add this to your code automatically by linking with the /ASSEMBLYDEBUG linker option.

クライアント側スクリプトのデバッグ、スクリプトのデバッグをする必要があります有効にする、ブラウザーで。For client-side script debugging, script debugging must be enabled in the browser. Chrome でクライアント側スクリプトをデバッグするには、次のように選択します。キットの Webとして、コードの種類と、アプリの種類によっては、Chrome のすべてのインスタンスを閉じて、デバッグ モードでブラウザーを起動する必要があります (型chrome.exe --remote-debugging-port=9222コマンドラインから)。For debugging client-side script on Chrome, choose Web kit as the code type, and depending on your app type, you may need to close all Chrome instances and start the browser in debugging mode (type chrome.exe --remote-debugging-port=9222 from a command line).

Visual Studio で、アタッチする実行中のプロセスをすばやく選択するには、入力Ctrl+Alt+Pの最初の文字を入力し、プロセスの名前。To quickly select a running process to attach to, in Visual Studio, type Ctrl+Alt+P, and then type the first letter of the process name.

シナリオScenario メソッドをデバッグします。Debug method プロセス名Process name メモとリンクNotes and links
ASP.NET 4 のリモート デバッグまたは IIS サーバー上の 4.5Remote debug ASP.NET 4 or 4.5 on an IIS server リモート ツールを使用し、プロセスにアタッチします。Use remote tools and Attach to Process w3wp.exew3wp.exe 参照してくださいリモート リモート IIS コンピューター上の ASP.NET のデバッグSee Remote debugging ASP.NET on a remote IIS computer
ASP.NET Core、IIS サーバー上のリモート デバッグRemote debug ASP.NET Core on an IIS server リモート ツールを使用し、プロセスにアタッチします。Use remote tools and Attach to Process dotnet.exedotnet.exe アプリの展開を参照してください。 Publish to IISします。For app deployment, see Publish to IIS. デバッグについては、次を参照してくださいリモート IIS コンピューター上のリモート デバッグ ASP.NET Core。For debugging, see Remote debugging ASP.NET Core on a remote IIS computer
サポートされているアプリの種類をローカルの IIS サーバー上のクライアント側スクリプトをデバッグします。Debug client-side script on a local IIS server, for supported app types 使用プロセスにアタッチします。Use Attach to Process chrome.exeMicrosoftEdgeCP.exe、またはiexplore.exechrome.exe, MicrosoftEdgeCP.exe, or iexplore.exe スクリプトのデバッグを有効にする必要があります。Script debugging must be enabled. Chrome、デバッグ モードで Chrome も実行する必要がありますWebkit コードで、にアタッチフィールド。For Chrome, you must also run Chrome in debug mode and select Webkit code in the Attach to field.
ローカル コンピューター上の c#、Visual Basic、または C++ アプリをデバッグします。Debug a C#, Visual Basic, or C++ app on the local machine いずれかの標準的なデバッグを使用して (F5) またはプロセスにアタッチします。Use either standard debugging (F5) or Attach to Process <アプリ名>.exe<appname>.exe ほとんどのシナリオで標準的なデバッグを使用していないとプロセスにアタッチします。In most scenarios, use standard debugging and not Attach to Process.
Windows デスクトップ アプリのリモート デバッグRemote debug a Windows desktop app リモート ツールRemote tools N/AN/A 参照してくださいc# または Visual Basic アプリのリモート デバッグまたはC++ アプリのリモート デバッグSee Remote debug a C# or Visual Basic app or Remote debug a C++ app
デバッガーなしのアプリを起動した後、ローカル コンピューター上の ASP.NET アプリをデバッグします。Debug an ASP.NET app on the local machine after you start the app without the debugger 使用プロセスにアタッチします。Use Attach to Process iiexpress.exeiiexpress.exe これは、アプリをロードすると便利な可能性がありますより高速など (たとえば) プロファイリングを行う場合。This may be helpful to make your app load faster, such as (for example) when profiling.
サーバー プロセスでその他のサポートされているアプリの種類をデバッグします。Debug other supported app types on a server process サーバーがリモートの場合は、リモート ツールを使用し、プロセスにアタッチします。If server is remote, use remote tools, and Attach to Process chrome.exeiexplore.exe、または他のプロセスchrome.exe, iexplore.exe, or other processes 必要に応じて、リソース モニターを使用して、プロセスを識別できるようにします。If necessary, use Resource Monitor to help identify the process. Remote debugging」(リモート デバッグ) を参照してください。See Remote debugging.
ユニバーサル Windows アプリ (UWP) や OneCore、HoloLens、IoT アプリのリモート デバッグします。Remote debug a Universal Windows App (UWP), OneCore, HoloLens, or IoT app インストールされているアプリ パッケージのデバッグDebug installed app package N/AN/A 参照してください、インストールされているアプリ パッケージをデバッグを使用してではなくプロセスにアタッチします。See Debug an installed app package instead of using Attach to Process
Visual Studio から起動していない、ユニバーサル Windows アプリ (UWP) や OneCore、HoloLens、IoT アプリをデバッグします。Debug a Universal Windows App (UWP), OneCore, HoloLens, or IoT app that you didn't start from Visual Studio インストールされているアプリ パッケージのデバッグDebug installed app package N/AN/A 参照してください、インストールされているアプリ パッケージをデバッグを使用してではなくプロセスにアタッチします。See Debug an installed app package instead of using Attach to Process

デバッガー機能を使用します。Use debugger features

Visual Studio デバッガー (ブレークポイントにヒット) などの完全な機能を使用する場合のプロセスにアタッチすると、アプリケーションする必要があります正確に一致、ローカルのソースとシンボル。To use the full features of the Visual Studio debugger (like hitting breakpoints) when attaching to a process, the app must exactly match your local source and symbols. つまり、デバッガーが、正しいを読み込むことにある必要がありますシンボル (.pdb) ファイルします。That is, the debugger must be able to load the correct symbol (.pdb) files. 既定では、デバッグ ビルドが必要です。By default, this requires a debug build.

リモートのデバッグ シナリオには、Visual Studio で開いているソース コード (または、ソース コードのコピー) が必要です。For remote debugging scenarios, you must have the source code (or a copy of the source code) already open in Visual Studio. リモート コンピューター上でコンパイル済みのアプリ バイナリをローカル コンピューター上と同じビルドからあります。The compiled app binaries on the remote machine must come from the same build as on the local machine.

いくつかのローカル デバッグ シナリオでデバッグできます Visual Studio で、ソースへのアクセスなしで、適切なシンボル ファイルがアプリに存在する場合。In some local debugging scenarios, you can debug in Visual Studio with no access to the source if the correct symbol files are present with the app. 既定では、デバッグ ビルドが必要です。By default, this requires a debug build. 詳細については、次を参照してください。シンボルとソース ファイルを指定するします。For more information, see Specify symbol and source files.

アタッチ エラーをトラブルシューティングするTroubleshoot attach errors

実行中のプロセスにデバッガーがアタッチすると、このプロセスは、1 種類以上のコードを含むことができます。When the debugger attaches to a running process, the process can contain one or more types of code. デバッガーをアタッチできるコードの種類は [コードの種類の選択] ダイアログ ボックスで表示されて選択されています。The code types the debugger can attach to are displayed and selected in the Select Code Type dialog box.

デバッガーは、ある種類のコードに正常にアタッチできても、別の種類にはアタッチできないことがあります。Sometimes, the debugger can successfully attach to one code type, but not to another code type. この問題は、リモート コンピューターで動作しているプロセスにアタッチしようとする場合に発生することがあります。This might occur if you are trying to attach to a process that is running on a remote computer. リモート コンピューターには、一部の種類のコードにしか対応しないリモート デバッグ コンポーネントがインストールされている場合があるためです。The remote computer might have remote debugging components installed for some code types but not for others. また、ダイレクト データベース デバッグのために複数のプロセスにアタッチしようとした場合にも発生することがあります。It can also occur if you try to attach to two or more processes for direct database debugging. SQL デバッグ機能は、単一プロセスへのアタッチのみをサポートします。SQL debugging supports attaching to a single process only.

デバッガーがすべてではありませんが、一部の種類のコードに接続できる場合は、アタッチできなかった種類を識別するメッセージを参照してください。If the debugger is able to attach to some, but not all, code types, you see a message identifying which types failed to attach.

デバッガーが少なくとも 1 種類のコードに正常にアタッチできる場合は、プロセスのデバッグを開始できます。If the debugger successfully attaches to at least one code type, you can proceed to debug the process. 正常にアタッチされたコードの種類のみをデバッグできます。You will be able to debug only the code types that were successfully attached. プロセスにアタッチされていないコードは引き続き実行されますが、ブレークポイントを設定、データの表示、またはそのコードに他のデバッグ操作を実行することはできません。The unattached code in the process will still run, but you won't be able to set breakpoints, view data, or perform other debugging operations on that code.

デバッガーがコードの種類へのアタッチに失敗した理由に関する詳細な情報を設定する場合は、コードの種類のみに再アタッチしてみてください。If you want more specific information about why the debugger failed to attach to a code type, try to reattach to only that code type.

ある種類のコードへのアタッチに失敗した理由を確認するにはTo obtain specific information about why a code type failed to attach:

  1. プロセスからデタッチします。Detach from the process. デバッグメニューの すべてデタッチします。On the Debug menu, select Detach All.

  2. アタッチに失敗したコードの種類のみを選択して、プロセスに再アタッチします。Reattach to the process, selecting only the code type that failed to attach.

    1. [プロセスにアタッチ] ダイアログ ボックスの [選択可能なプロセス] の一覧で、プロセスを選択します。In the Attach to Process dialog box, select the process in the Available processes list.

    2. 選択選択します。Select Select.

    3. [コードの種類の選択] ダイアログ ボックスの [次のコードの種類をデバッグする] をクリックし、アタッチに失敗したコードの種類を選択します。In the Select Code Type dialog box, select Debug these code types and the code type that failed to attach. その他のコードの種類の選択を解除します。Deselect the other code types.

    4. [OK] を選択します。Select OK.

    5. プロセスにアタッチダイアログ ボックスで、アタッチします。In the Attach to Process dialog box, select Attach.

    このとき、アタッチは完全に失敗し、詳細なエラー メッセージが表示されます。This time, the attach will fail completely, and you will get a specific error message.

関連項目See also