Extension Debugger 3.0.0.5-SNAPSHOT

3.0.0.5-SNAPSHOT is out with a range of good improvments and bug fixes, plus a whole lot more unit tests which you don’t care about, except that we know things work!

Exception breakpoints (native mode, Lucee 7.1.0.100+)

The big one: when an uncaught exception is thrown, the debugger now suspends right at the throw site with your full stack trace and variable state intact. This works across:

  • Top-level templates
  • Component methods
  • Closures
  • cfthread joins (throwOnError=true)
  • Parallel arrayEach closures

So instead of just getting a yellow error screen, you can inspect exactly what went wrong — local variables, arguments, the cfcatch scope — before continuing or stopping the request.

This required a Lucee core fix LDEV-6282 that landed in 7.1.0.100, which is now the minimum version for extension mode.

Breakpoints inside cfincluded templates (native mode)

This one’s been a real pain point. If you had a breakpoint inside a template that was reached via cfinclude from inside a UDF body, the debugger would silently never hit it. The frame’s file was the UDF’s file, not the included file, so the breakpoint coordinates never matched.

This is fixed. Breakpoints now correctly hit and report the included file in all the common patterns:

  • onRequest / onRequestStart including a target page
  • onError including an error template
  • Plain UDFs that cfinclude a sub-template
  • cfmodule and custom tags invoked from a UDF
  • Nested cfinclude chains (depth 2+)

Step-over also works correctly across the include boundary — it stays inside the included file rather than jumping back to the UDF.

Crash fix for Lucee 6 (agent mode)

Thanks to @pixilation who reported the crash in — inspecting variables containing arrays or structs was calling System.exit(1) and taking the whole server down. That’s fixed; the agent now handles the javax/jakarta servlet API difference properly.

Other native mode fixes

  • Completions (debug console autocomplete) now suggests local and arguments scope variables
  • Function breakpoints now correctly report "function breakpoint" as the stop reason
  • Empty setFunctionBreakpoints response body is fixed
  • getApplicationSettings and other custom DAP requests now correctly use the currently-suspended thread’s PageContext

Install

Full setup instructions in the README.

Extension (Lucee 7.1.0.100+)

LUCEE_EXTENSIONS=org.lucee:debugger-extension:3.0.0.5-SNAPSHOT

Remember to Set LUCEE_DAP_SECRET and LUCEE_DAP_PORT and restart.

Java Agent (Lucee 6.x / 7.0)

See JAVA_AGENT.md for JVM startup configuration.

SNAPSHOTs aren’t browserable, here’s a direct link to download this agent jar.

https://central.sonatype.com/repository/maven-snapshots/org/lucee/debugger-agent/3.0.0.5-SNAPSHOT/debugger-agent-3.0.0.5-20260423.150357-1.jar

Recipe

I’d love to get any feedback on this, not just bug reports, then we can publish a stable release

2 Likes