Attach and debug next
APPLIES TO: Business Central 2019 release wave 2 and later
If you don't want to publish and invoke functionality to debug it, you can instead attach a session to a specified server, and await a process to trigger the breakpoint you've set. Then debugging starts when the code that the breakpoint is set on is hit.
Note
To use the attach functionality, you must make sure that your app is published with Ctrl+F5 first, or with Alt+Ctrl+F5 for RAD publishing, before you start the debugging session with F5. Creating a new server session from the client can be achieved for example by launching a new client session. Pressing F5 (Refresh) in a browser may not create a new server session, because it is cached, but if a session is expired and refreshed that will create a new session.
Important
Only the user who starts a Visual Studio Code attach session can issue the Web request on the server.
Attach configuration
You can activate the attach functionality by creating a new configuration in the launch.json
file. The configuration has two flavors; Attach to the client on the cloud sandbox and Attach to the client on your server. Use the first option to attach to a cloud session, and the second option to attach to a local server. For an overview of configuration options, see Launch JSON file.
Note
With Business Central 2023 release wave 1, two new properties are added to the launch configuration: sessionId
and userId
, which allow attaching to an ongoing session and also debugging on behalf of another user.
In the attach configuration, the breakOnNext
setting specifies the next client to break on when the debugging session starts and allows only one option. The available options are: WebServiceClient
, WebClient
, and Background
. On a sandbox environment, you can only attach to and break on the next WebServiceClient
session.
Two other important properties are sessionId
and userId
. sessionId
specifies an ongoing session of the specified type in breakOnNext
. This session should belong to the user in userId
property if specified.
If sessionId
isn't specified, but userId
is, then the debugger will be attached to the next session of the type specified in breakOnNext
for the given user.
Important
In case of userId
being a different user than the user logged into Visual Studio Code, then the user logged into Visual Studio Code must be part of D365 ATTACH DEBUG permission set.
Note
The debugger is able to connect to background sessions, and not background tasks.
Example (attach to a web client session)
The following example illustrates a configuration for a local server, where you want to debug a web client session.
...
{
"name": "My attach to local server",
"type": "al",
"request": "attach",
"server": "https://localhost",
"serverInstance": "BC200",
"authentication": "Windows",
"breakOnError": true,
"breakOnRecordWrite": false,
"enableSqlInformationDebugger": true,
"enableLongRunningSqlStatements": true,
"longRunningSqlStatementsThreshold": 500,
"numberOfSqlStatements": 10,
"breakOnNext": "WebClient"
}
...
Example (attach to an online sandbox web services session)
The following example illustrates a configuration for an online sandbox, where you want to debug a web service endpoint.
...
{
"name": "Attach to online sandbox",
"type": "al",
"request": "attach",
"environmentType": "Sandbox",
"environmentName": "MyEnvironment",
"breakOnError": true,
"breakOnRecordWrite": false,
"enableSqlInformationDebugger": true,
"enableLongRunningSqlStatements": true,
"longRunningSqlStatementsThreshold": 500,
"numberOfSqlStatements": 10,
"breakOnNext": "WebServiceClient"
}
...
Supported Attach configurations
The following configurations for attach are supported:
Business Central | Web client | Web service client | Background session |
---|---|---|---|
On-premises | Supported | Supported | Supported |
Sandbox | Supported | Supported | Supported |
How to start an attach session
- In Visual Studio Code, under Run, choose Add configuration.
- Choose whether to attach to a cloud or a local session.
Thelaunch.json
file is now populated with the correct attach configuration settings. If you've selected a local session, change the default settings to point to your local server in theserver
andserverInstance
settings. - Set
breakOnNext
to specify the client type on which to break. - In your code, set at least one breakpoint using Run from the toolbar, choose New breakpoint, and then choose which type of breakpoint to add. You can always add more breakpoints while debugging.
- If your most recent app is not yet published, it's important to make sure you publish it slecting Ctrl+F5 , alternatively Alt+Ctrl+F5 for RAD publishing. Then, use F5 to start the attach session.
Important
If you modify the app code during the debugging session, make sure to re-publish the app using Ctrl+F5 .
- After publishing the app, select F5 to start a debugging session.
Note
If you have more attach configuration settings, you must first select which configuration to start.
- Debug and inspect the code. You can add more breakpoints while debugging.
- Stop the attach debugging session by selecting Detach in the Visual Studio Code toolbar.
See Also
AL Development Environment
Developing Extensions in AL
Debugging
Snapshot Debugging
JSON Files