[[BacklogDebugger-BacklogDebugger]]
BacklogDebugger
~~~~~~~~~~~~~~~

*Available as of Camel 2.12*

Camel supports a backlog debugger that is used for live debugging of
message they are routed in Camel. 
The backlog debugger has additional functionality for easier debugging
aimed at tooling, than the Debugger. The backlog
debugger is exposed in JMX in the tracer node with the name
`BacklogDebugger`. The JMX API is defined in the
`org.apache.camel.api.management.mbean.ManagedBacklogDebuggerMBean`
interface.

You can enable or disable the BacklogDebugger dynamically, by calling
`enableDebugger` or `disableDebugger` methods.

[[BacklogDebugger-Options]]
Options
^^^^^^^

[width="100%",cols="10%,20%,70%",options="header",]
|=======================================================================
|Option |Default |Description

|`enabled` |`false` |Whether the debugger is enabled or not.

|`singleStepMode` |`false` |Whether currently in single step mode of a single
Exchange.

|`bodyMaxChars` |`128kb` |To limit the message body to a maximum size in the traced message. Use 0
or negative value to use unlimited size.

|`bodyIncludeStreams` |`false` |Whether to include the message body of stream based messages. If enabled
then beware the stream may not be re-readable later. See more about
Stream Caching.

|`bodyIncludeFiles` |`true` |Whether to include the message body of file based messages. The overhead
is that the file content has to be read from the file.
|=======================================================================

[[BacklogDebugger-Operations]]
Operations
^^^^^^^^^^

[width="100%",cols="10%,20%,70%",options="header",]
|=======================================================================
|Option |Type |Description

|`enableDebugger` |`void` |To enable the debugger

|`disableDebugger` |`void` |To disable the debugger

|`getDebuggerCounter` |`long` |Gets the total number of debugged messages.

|`resetDebuggerCounter` |`void` |To reset the debugger counter.

|`dumpTracedMessagesAsXml(nodeId)` |`String` |To dump the debugged messages from the give node id in XML format.

|`addBreakpoint(nodeId)` |`void` |To add a breakpoint at the given node.

|`addConditionalBreakpoint(nodeId, language, predicate)` |`void` |To add a conditional breakpoint at the given node. The predicate is
created from the language parameter.

|`removeBreakpoint(nodeId)` |`void` |To remove the breakpoint from the given node id.

|`resumeBreakpoint(nodeId)` |`void` |To resume a suspend breakpoint, which will then continue routing the
Exchange.

|`resumeAll` |`void` |To resume all suspended breakpoints.

|`getSuspendedBreakpointNodeIds` |`Set<String>` |To get a set of all the nodes which has suspended breakpoints (eg an
Exchange at the breakpoint which is suspended).

|`stepBreakpoint(nodeId)` |`void` |To start single step mode from a suspended breakpoint at the given node.
Then invoke `step` to step to next node in the route.

|`step` |`void` |To step to next node when in single step mode.

|`getBreakpoints` |`Set<String>` |To get a set of all the nodes which has a breakpoint added.

|`enableBreakpoint(nodeId)` |`void` |To active a breakpoint which has been temporary disabled.

|`disableBreakpoint(nodeId)` |`void` |To disable a breakpoint temporary.

|`setMessageBodyOnBreakpoint(nodeId,body)` |`void` |To update the message body on the suspended Exchange
at the node.

|`setMessageHeaderOnBreakpoint(nodeId,headerName,value)` |`void` |To update/add the message header on the suspended
Exchange at the node.
|=======================================================================

[[BacklogDebugger-Enabling]]
Enabling
^^^^^^^^

You would need to enable this using the JMX API.

[[BacklogDebugger-SeeAlso]]
See Also
^^^^^^^^

* BacklogTracer
* Debugger
* <<log-component,Log>>

