How to Use the Debugger in Dynamics 365 Finance and Operations
Debugging is an essential skill for developers working with Dynamics 365 Finance and Operations (D365 F&O). The built-in debugger helps you identify and fix issues in your X++ code efficiently. In this blog post, we’ll walk through how to use the debugger effectively in D365 F&O.
Prerequisites
Before you can start debugging, you’ll need:
Access to a D365 F&O development environment
Appropriate permissions (developer role)
Visual Studio installed (for some debugging scenarios)
Enabling Debugging
Set up debugging permissions:
Navigate to System administration > Setup > License configuration
Ensure the “Debugger” privilege is enabled for your user role
Configure debugging options:
Go to Tools > Options > Development > Debugging
Configure your preferred debugging settings
Starting a Debug Session
There are several ways to start debugging in D365 F&O:
1. Attaching to a Process
Open the Debugger workspace
Click on Attach debugger
Select the process you want to debug (user session)
Click Attach

2. Debugging from Visual Studio
Open your X++ project in Visual Studio
Set breakpoints in your code
Press F5 to start debugging (or use the Debug menu)

3. Using Conditional Breakpoints
Navigate to the form or process you want to debug
After adding the breakpoint, right-click it in the breakpoints list
Select “Edit breakpoint”
In the “Condition” field, enter your X++ expression
Example: custAccount == “US-001”


Key Debugging Features
Breakpoints
Breakpoints pause execution at specific lines of code. You can:
Set conditional breakpoints that only trigger when certain conditions are met
Set hit count breakpoints that trigger after a specified number of hits
Enable/disable breakpoints as needed
Stepping Through Code
When execution is paused, you can:
Step Over (F10): Execute the current line and move to the next
Step Into (F11): Dive into method calls
Step Out (Shift+F11): Complete the current method and return to the caller

Examining Variables
The debugger allows you to:
View local variables in the Locals window
Add watches for specific variables
Quickly evaluate expressions in the Immediate window

Call Stack
The call stack shows: The hierarchy of method calls that led to the current execution point , Allows navigation to different levels of the call stack
Debugging Different Scenarios
Batch Jobs
To debug batch jobs: Set breakpoints in the batch job code , submit the batch job and Attach the debugger to the batch process

Business Events
To debug business events:
Set breakpoints in the event handler code
Trigger the business event
The debugger will pause when the event is processed
Tips for Effective Debugging
- Use conditional breakpoints to avoid hitting breakpoints in irrelevant scenarios
- Log variable values when you can’t attach a debugger (using info() or tracing)
- Reproduce issues in a development environment before debugging
- Debug in isolation when possible to eliminate external factors
Use the debugger’s data tips (hover over variables to see their values)
Common Debugging Challenges
- Timing issues: Some bugs only appear in specific timing scenarios
Solution: Use thread debugging and pay attention to execution order
- Environment differences: Code may behave differently in different environments
Solution: Replicate the production environment configuration as closely as possible
- Performance impact: Debugging can slow down execution
Solution: Use targeted debugging rather than broad breakpoints
To Conclude, The D365 F&O debugger is a powerful tool that can save you hours of troubleshooting time. By mastering breakpoints, variable inspection, and call stack navigation, you can quickly identify and resolve issues in your X++ code. Remember to use debugging judiciously in production environments and always follow your organization’s guidelines for debugging in live systems.
We hope you found this blog useful, and if you would like to discuss anything, you can reach out to us at transform@cloudfonts.com.