Skip to Content
Genexy IDE Beta 0.9.1 · Download the Beta build
Features

Debugging

FREEIDEDesktop only

Genexy debugs Go, Java and Kotlin programs through the Debug Adapter Protocol. You start a run configuration under the debugger, stop at breakpoints, step through the code and inspect variables, all inside the IDE. Debugging is free and needs no account.

A Go session paused on a breakpoint. The editor marks the stopped line and shows the values of nearby variables inline; the Debug panel lists the call stack, variables, watch expressions and breakpoints on the left and the Debug Console, with program output and an expression prompt, on the right.

Supported languages

LanguageAdapterRun configurationsInstalled from
GoDelve 1.27.2Gogo install, needs the Go toolchain on PATH
Javajava-debug 0.53.1 (in JDT.LS)Maven, GradleMaven Central, SHA-256 verified
Kotlinkotlin-debug-adapter 0.4.4Maven, GradleGitHub release, SHA-256 verified

Each adapter is pinned to the version above. When one is missing, the Debug panel says so and offers Install <version>; it goes into ~/.genexy/debug. Java debugging runs inside the Java language server, so it needs the same JDK as code intelligence; Kotlin needs a JDK on JAVA_HOME or PATH.

Debugging is a desktop feature: the adapters are separate processes. On Android, iOS and in a browser the Debug panel shows “Debugging is available in the desktop app.”

Start a session

Choose the run configuration in the title bar and press the bug next to Run, or F5.

The rail icon carries a dot while a session is alive: yellow when it is paused, green when it is running. A floating toolbar with Continue, Step Over, Step Into, Step Out, Restart and Stop appears over the editor and can be dragged out of the way.

Go configurations debug in three modes: debug builds and runs the package, test debugs go test (optionally only the tests matching -test.run), and exec runs a prebuilt binary. Java and Kotlin start the program, then attach to it over JDWP; Genexy adds the debug agent for spring-boot:run, quarkus:dev, Maven tests, exec:java and Gradle bootRun / run / test automatically.

The Debug panel

The panel opens in the bottom dock, like the terminal. Its header shows the session and its state, such as “Paused on breakpoint” or “Paused on exception”, with Continue/Pause, the steps, Evaluate, Restart and Stop.

The views are separate panes side by side, each with tabs; drag the dividers to resize them. A wide panel shows three panes (Frames · Breakpoints | Variables · Watch | Console), a narrower one two, a narrow one a single pane with all tabs. When the program stops, Variables and Frames come to the front.

TabWhat it shows
FramesThreads or goroutines and their frames; runs of library frames fold into one row. Above them, every session when more than one is running
VariablesThe scopes of the selected frame, with a filter and a hexadecimal toggle
WatchExpressions re-evaluated at every stop
BreakpointsAll breakpoints and the exception filters of the adapter, with add, deactivate and remove
ConsoleThe program’s output and the adapter’s messages, with an expression prompt

In the Console, stdout, stderr and the adapter’s messages can each be filtered out. Its prompt evaluates expressions in the selected frame; Shift+Enter adds a line, and file:line references in the output are links.

While the program is paused, the editor marks the current line (red for a breakpoint hit, yellow after a step, green for a selected caller frame), shows the values of nearby variables inline, and hovering a symbol shows its value. Evaluate Expression (Alt+F8) opens a dialog for longer expressions with a history; Add to Watch keeps one.

⚠️

An expression you evaluate runs inside the program. Calling a method or assigning a variable changes the program’s state, exactly as if the code had done it.

Breakpoints

Click the editor gutter or press F9 to toggle a breakpoint on a line. Ctrl+click disables or enables one, and Shift+click opens the breakpoint editor. The gutter menu adds Add Conditional Breakpoint…, Add Logpoint…, Add Hit Count Breakpoint…, Add Temporary Breakpoint, and, while paused, Run to Here.

Shift+click a breakpoint, or choose Edit Breakpoint…, to make it conditional, give it a hit count or turn it into a logpoint that prints a message without stopping.
KindGutterBehaviour
Linered dotStops every time
Conditionalred diamondStops when the expression is true, for example order.total > 1000
Hit countred diamondStops on a given hit: 5, ≥ 10, > 3 or every 3
Logpointhollow diamondLogs a message without stopping; {expression} in braces is evaluated
Temporarydot with a centreRemoved after the first hit (Remove once hit)
FunctionƒStops when a function is entered, for example main.handleLogin

A hollow red ring means the adapter could not bind the breakpoint yet; the why? link explains it. Breakpoints move with your edits, and Ctrl+F8 deactivates all of them at once without deleting any. Where an adapter has no native support for a kind, Genexy evaluates it itself at each hit and says so in the editor.

Keys

Debug

ShortcutAction
F5Start debugging / continue
ShiftF5Stop / disconnect
CtrlShiftF5Restart debugging
F6Pause
F10Step over
F11Step into (full screen when no thread is paused)
ShiftF11Step out
F9Toggle breakpoint
CtrlF10Run to cursor
CtrlF8Deactivate / activate breakpoints
AltF8Evaluate expression

The IntelliJ IDEA keymap preset in Settings uses that IDE’s keys instead (Shift+F9 to debug, F8 to step over, F7 to step into).

Configuration

Debug options live in the run configuration, in its debug section:

  • Go (Delve): program, mode (debug, test, exec), only tests matching, arguments, build flags such as -tags=dev, stop on entry, show package variables.
  • Java / Kotlin: the debug agent (automatic from the command, or a specific one), JVM arguments, project name, and Wait for the debugger before starting, which is the default for tests.

Debugging other tools is not supported yet; the section says so for them.

From AI

Your AI can drive the debugger through the Genexy MCP tools: list debuggable configurations, set breakpoints and logpoints, start a session, wait for a stop, read the stack and variables, evaluate expressions, step and stop. The breakpoints it sets are marked AI in the Breakpoints list, and it uses the same session you see in the panel. See AI Chat.