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:

* In your `MockNetwork`, ensure that `threadPerNode` is set to `false`
  • 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

  • In your DriverParameters, ensure that startNodesInProcess is set to true
  • 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

  • In your DriverParameters, ensure that startNodesInProcess is set to false and isDebug is set to true
  • 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
  • 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.