Tutorial: Debug a plug-in
This tutorial is the second in a series that will show you how to work with plug-ins.
- Tutorial: Write and register a plug-in
- Tutorial: Debug a plug-in (This tutorial)
- Tutorial: Update a plug-in
For detailed explanation of supporting concepts and technical details see:
Because the plug-in executes on a remote server, you cannot attach a debugger to the process. The plug-in profiler captures a profile of an executing plug-in and allows you to re-play the execution of the plug-in using Visual Studio locally.
- All the prerequisites for Tutorial: Write and register a plug-in apply. See Prerequisites.
- If you haven't completed the previous tutorial, you can use the general steps below with a different registered plug-in.
Install plug-in profiler
If the Plug-in registration tool isn't already installed and open, follow the steps in Tutorial: Write and register a plug-in to open it. Complete the Connect using the Plug-in Registration tool section.
In the Plugin Registration tool, click Install Profiler.
This will install a new managed solution named Plug-in Profiler in your Common Data Service environment. This will take a minute or two to complete.
In the Plugin Registration tool, select the (Step) BasicPlugin.FollowupPlugin: Create of account step you registered earlier, and click Start Profiling.
In the Profiler Settings dialog accept the default settings and click OK to close the dialog.
Form more information about running the profiler see Run the plug-in profiler from a Command Prompt window.
Capture a profile
In your model-driven app, create a new account to trigger the plug-in. This will capture an instance of the plug-in executing and persist it as a profile record in the system.
In the Plug-in Registration tool, click Debug.
In the Replay Plug-in Execution dialog, on the Setup tab, click the icon to open the Select Profile from CRM dialog.
In the Select Profile from CRM dialog, select the profile where Type Name equals BasicPlugin.FollowupPlugin and represents the profile captured when you last triggered the plug-in.
Debug your plug-in
In the Replay Plug-in Execution dialog, on the Setup tab, in the Specify Assembly section, click the ellipses (…) button and choose the location of your
In your Visual studio project, set a break point in your plug-in class.
In your Visual Studio project, select Debug > Attach to Process….
Select the PluginRegistration.exe process and click Attach.
You should see that the Plug-in Registration tool is now running in debug mode.
In the Replay Plug-in Execution dialog, click Start Execution.
In your Visual Studio project, you should see that the code is paused at the breakpoint you set earlier.
You can now step through your code to debug.
To repeat, in your Visual Studio project select Debug > Reattach to process and in the Replay Plug-in Execution dialog click Start Execution again.
Close the Replay Plug-in Execution dialog
In the Plug-in Registration tool, click Stop Profiling.
To learn more about common things you will do with plug-ins, continue to Tutorial: Update a plug-in
If you will not continue to the next tutorial you should unregister the BasicPlugin assembly you created in this step. See Unregister assembly, plug-in, and step for instructions.
Run the plug-in profiler from a Command Prompt window
While it is often preferable to run the profiler interactively from the Plug-in Registration tool, the profiler can be executed from a Command Prompt window independent of the tool. This is useful to obtain the plug-in profile log from a customer's Dynamics 365 apps server to debug a failed plug-in. A developer can then use that log to replay the plug-in's execution in the Plug-in Registration tool and debug the plug-in usingVisual Studio.
Procedure: Run the plug-in profiler from a command prompt
- Open a Command Prompt window and set the working directory to the folder where you downloaded the Plug-in Registration tool
- Type this command to see the available run-time parameters:
- Review the supported parameter list and re-run the PluginProfiler.Debugger.exe program with the appropriate parameters.