6 Replies Latest reply on Apr 12, 2013 11:57 AM by jamedo1234

    Application works only in flash debugger

    cpDev

      I just finished porting my AIR  application to Flash.It works perfectly fine when I debug it via Flash  Builder or when I load the enclosing HTML file in a browser that uses a  debugging enabled version of Flash. However, it stops working when I  load it a non-debug version of Flash. The "failure" seems to occur when  the app tries to send a SOAP message request to our API server. That  whole SOAP layer was generated using Flash Builder's Web Services class  generation tools.

       

      According to http://stackoverflow.com/questions/1137223/flex-app-not-working-withou t-debug-version-of-flash-player, getStackTrace() is known to cause problems, so I disabled my calls to it but the problem still occurrs.

       

      I could really use some help.

        • 1. Re: Application works only in flash debugger
          cpDev Level 1

          Does anyone have any suggestions?

          • 2. Re: Application works only in flash debugger
            kokorito Level 4

            maybe cross domain policy

            /me shrugs

            • 3. Re: Application works only in flash debugger
              Flex harUI Adobe Employee

              Use a network monitor to compare traffic between the working and non-working

              versions.

               

              Relying on getStackTrace(), trace(), System.gc() and other debugging APIs is

              certainly going to cause trouble.

               

              If you are using metadata, make sure you keep the metadata you need.  By

              default, almost everything is stripped from a release build.

              • 4. Re: Application works only in flash debugger
                cpDev Level 1

                Flex harUI, thanks for the response. We trace() a lot in our application, so I'll try disabling all our calls to it. I didn't realize that it could actually cause problems, I thought trace() is safely ignored when running the application via a non-debug version of Flash. Is there a webpage that contains all the debugging API calls that I should not be using?

                 

                Incidentally, I did use wireshark to inspect traffic over the wire and found that the application's doesn't get around to sending anything at all.

                • 5. Re: Application works only in flash debugger
                  Flex harUI Adobe Employee

                  The problem with using trace is that I'm not sure what happens if someone

                  does something like

                      trace(removeChild(child));

                   

                  That should return the child removed in the debugger, but the entire call

                  might get deleted in release.

                   

                  I don't know of a page that lists all debugger-only calls.  There aren't

                  that many, but flash.sampler package is another set of APIs that are

                  debugger only.

                   

                  If there is no network traffic, are you putting the release SWF in the exact

                  same URL as the debug SWF?  Otherwise there could be issues with the

                  configuration being hardwired to something.

                  • 6. Re: Application works only in flash debugger
                    jamedo1234

                    Had an issue where my Flash application was failing (crashing) in the production player, and working fine in the debugger version of the player. Since my experience was different, thought I would add a comment.

                     

                    I assumed that the issue was related to using some sort of Debugger Player specific calls, like mentioned above. However, this was not the case.

                     

                    It was a 'while' function, that apparently died silently in the Debugger Player, yet failed, froze, and crashed the production player. The only way I found this sort of phantom bug, was to check the net calls in the browser. Using the last net action made by the player directly before it crashed, I worked forward from that point in the code where that net action took place. Literally just commenting out different things in the workflow until I found it.

                     

                    Not sure if this could possibly help anyone, but figured I'd share anyway.