Extension Debugger some breakpoints not working on MacOS

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

Thanks @pixilation for the detailed analysis, the clear repro and the workaround. That makes sense: the check looks at where the debugger and Lucee live, not where your code lives, so a case-insensitive host mount inside a case-sensitive container gets the wrong answer. I’ve opened a ticket for it: Jira and will report back here once there’s a snapshot to test. Until then, your symlink workaround is a good way to get breakpoints working.