The Extension Debugger does a check to see if the filesystem is case-sensitive or not.
It does this with checkIfFileSystemIsCaseSensitive(), which takes either the jarPath (agent) or Lucee config dir (extension), inverts the path, then checks if the new path exists. If it exists, then the filesystem must be case-insensitive.
But when Lucee is running in a docker, the Lucee files can be running on a case-sensitive filesystem, while the code is mounted from a case-insensitive host. This causes the Extension Debugger to use case-sensitive filename lookups, even through the code treats filenames as case-insensitive. The result is breakpoints not working when files are referenced with the wrong filename casing.
Example:
Environment: MacOS + Docker
IDE: VS Code
Version: Extension Debugger 3.0.0.8
// Bar.cfc
component {
function getMessage() {
return "Hello, World!";
}
}
// example.cfm
<cfscript>
foo = new BAR();
writeOutput(foo.getMessage());
</cfscript>
A breakpoint on the return in getMessage won’t fire because it was requested for “Bar.cfc”, but the debugger only knows about “BAR.cfc”.
Workaround:
Create a 2nd file where checkIfFileSystemIsCaseSensitive checks so it thinks the filesystem is case-insensitive. Given a jar location of “/opt/lucee/debugger/debugger-agent.jar”:
mkdir -p /OPT/LUCEE/DEBUGGER/
ln -s /opt/lucee/debugger/debugger-agent.jar /OPT/LUCEE/DEBUGGER/DEBUGGER-AGENT.JAR