The next time you're crying uncle deep in Flex-ColdFusion bugland, take a moment to check whether or not Flex and/or ColdFusion are trying to tell you the same thing through their logs.
Case 1. Flex compiler error messages are usually pretty helpful, so it's a rude shock to get something like this in the "Problems" view:
An internal build error has occurred. Please check the Error Log.
This error log is in {workspace}.metadata\.log. Your workspace is the directory containing your projects - if you're not sure where this is, look in the path that comes up under File > Switch Workspace. Look in there and you'll suddenly be sharing FlexBuilder's inner thoughts, for instance:
!ENTRY com.adobe.flexbuilder.project 4 43 2007-05-15 08:20:56.489
!MESSAGE Uncaught exception in compiler
!STACK 0
java.lang.InternalError: Converter malfunction (Unicode) -- please submit a bug report via http://java.sun.com/cgi-bin/bugreport.cgi
at sun.nio.cs.StreamDecoder$ConverterSD.malfunction(Unknown Source)
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(Unknown Source)
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XML11EntityScanner.skipString(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11ConfigurationMMImpl.parse (XML11ConfigurationMMImpl.java:198)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at flex.messaging.config.AbstractConfigurationParser.loadDocument (AbstractConfigurationParser.java:105) ...can be read as "While doing something with the flex messaging configuration (you read stack traces from the bottom to the top) something went wrong reading an xml document in unicode". Ah-ha, you've accidentally saved the services-config.xml with a unicode encoding.
Case 2. As the old Ewok saying goes, "Two logs are better than one". I normally develop on OS X where I start ColdFusion from the command line, so I get the standard output of JRun scrolling past with lots of useful detail. But if you're on Windows and running ColdFusion as a service this output is hidden, not under C:\CFusionMX7\logs with the application, server etc logs (of course you are already watching these all the time... right?) but under C:\CFusionMX7\runtime\logs\coldfusion-out.log. A good example of how useful this log can be is the message:
[Flex] Error handling message: flex.messaging.security.SecurityException: External login command required. Please check your security configuration. ...which happens if you accidentally use setCredentials() instead of setRemoteCredentials() on your RemoteObject instance in Flex. This is a lot more specific than the message that comes back in the fault object: "Channel.Ping.Failed".
If you're not in the habit of watching log files, you probably haven't discovered tail -f and it's many variants. Check this post for a quick starter guide to tailing your logs (the comments mention the names of some other tailing software - I currently use BareTail on Windows servers).
Cheers,
Robin