* Consolidates and extends debugging information. * Clearer remote debugging instructions.
2.4 KiB
Debugging a CorDapp
There are several ways to debug your CorDapp.
Using a MockNetwork
You can attach the IntelliJ IDEA debugger to a MockNetwork
to debug your CorDapp:
Define your flow tests as per
api-testing
- In your
MockNetwork
, ensure thatthreadPerNode
is set tofalse
- In your
Set your breakpoints
Run the flow tests using the debugger. When the tests hit a breakpoint, execution will pause
Using the node driver
You can also attach the IntelliJ IDEA debugger to nodes running via the node driver to debug your CorDapp.
With the nodes in-process
Define a network using the node driver as per
tutorial-integration-testing
- In your
DriverParameters
, ensure thatstartNodesInProcess
is set totrue
- In your
Run the driver using the debugger
Set your breakpoints
Interact with your nodes. When execution hits a breakpoint, execution will pause
- The nodes' webservers always run in a separate process, and cannot be attached to by the debugger
With remote debugging
Define a network using the node driver as per
tutorial-integration-testing
- In your
DriverParameters
, ensure thatstartNodesInProcess
is set tofalse
andisDebug
is set totrue
- In your
Run the driver. The remote debug ports for each node will be automatically generated and printed to the terminal. For example:
[INFO ] 11:39:55,471 [driver-pool-thread-0] (DriverDSLImpl.kt:814) internal.DriverDSLImpl.startOutOfProcessNode -
Starting out-of-process Node PartyA, debug port is 5008, jolokia monitoring port is not enabled {}
Attach the debugger to the node of interest on its debug port:
- In IntelliJ IDEA, create a new run/debug configuration of type
Remote
- Set the run/debug configuration's
Port
to the debug port - Start the run/debug configuration in debug mode
- In IntelliJ IDEA, create a new run/debug configuration of type
Set your breakpoints
Interact with your node. When execution hits a breakpoint, execution will pause
- The nodes' webservers always run in a separate process, and cannot be attached to by the debugger
By enabling remote debugging on a node
See enabling-remote-debugging
.