June 18, 2007
By Darren Pywell
This issue is caused by Eclipse’s own implementation of the Java Debug Interface (JDI) which does not accurately reflect the Sun reference JDI implementation. Because of the way Eclipse manipulates the Java classpath, any Eclipse application (e.g. FusionDebug) attempting to load a JDI implementation will reference the Eclipse classes, instead of the Sun implementation.
We have provided links to the relevant Eclipse bugs below.
Problems with FusionDebug on Mac OS X can be reduced to two Eclipse issues:
- Eclipse supplies their own JDI implementation which is incompatible with the Sun JDI Specification (Eclipse Bug 101686)
- This issue may not occur on Eclipse 3.1 or earlier because it was masked by a classpath issue which has been subsequently fixed (Eclipse Bug 89111)
- This is a Mac-specific bug with Eclipse’s classpath, which was set incorrectly and caused Eclipse JDT (normal Java) debugging to be unavailable. This would allow our supplied-JDI implementation to function correctly.
- The fix for this issue (a correct Classpath which references the Eclipse JDI implementation) allows Eclipse JDT debugging to function, but unmasks bug 101686, which causes FusionDebug to malfunction.
This workaround creates a second Eclipse bundle which does not use the Eclipse JDI implementation. This will unfortunately disable Eclipse JDT (normal Java) debugging, but will allow FusionDebug to function. The remainder of Eclipse properties (workspace, configuration, formatting etc.) will remain identical between the bundles. The original bundle can be used for JDT debugging, if required.
- Create a copy of your Eclipse installation with a modified classpath. This will make Eclipse find the Sun JDI implementation.
- Locate your root Eclipse installation.
- Within this folder, copy the Eclipse.app bundle, renaming the copy to EclipseFD.app
- Open the EclipseFD.app bundle (Right click/Ctrl-click on EclipseFD -> Show Package Contents)
- Navigate to Contents -> MacOS and edit the eclipse.ini file
- Remove the line which begins -Xbootclasspath/p:../../../plugins/org.eclipse.jdt[…]
- Save this file.
Caveat: This will disable JDT (normal Java) debugging within Eclipse. For this functionality, use the original Eclipse.app bundle.
||ColdFusion 8, ColdFusion 6, ColdFusion 7
- FDS-51 – Mac OS X: Lingon or Terminal started CF; FusionDebug reports “Cannot connect to target system”
- FDS-80 – FusionDebug could not connect to the target system (Localhost:8000). Please ensure the debug agent is listening on the system, check you configuration file – Mac OS X