The Ultimate Debugging And Profiling

Yesterday I came across interesting articles from jpauclair. The first one is about Almighty PreloadSWF (mm.cfg attribute to define preloader for any as3 .swf file) and the second about his new Flash Visual Profiler. Long story short, you can debug and profile any ActionScript 3 compiled .swf file on the web (or local) you decide to, for example in De MonsterDebugger (open source debugger for Adobe Flash, Flex and AIR).

Read the rest of this entry »

Quick tip: [tincan]

While using flex app profiling / performance profile, I found out that a lot of cumulative time (>70%) was spent on [tincan] method. After some googling it revealed it is time processing RTMP messages. It includes FMS video/audio traffic, rtmp data services, and remote shared object synchronization.

Tincan used to be the code name of Flash Communication Server 1.0, now known as Flash Media Server.

There are also some more methods logged: [pre-render], [mouseEvent], [enterFrameEvent], [mark], [abc-decode], [verify], [render], [reap], [io], [all-complete], [avm1], [builtins], [execute-queued], [generate], [newclass], [openEvent], [sweep] … unknown for me for now.

Flex 3 profiling not working (update)

The profiler is a part of the Flex Builder IDE, that listens for messages from the profiler agent. The profiler agent is a swf launched in parallel to your main swf. It is located in your Flex workspace at .metadata/.plugins/com.adobe.flash.profiler/ProfilerAgent.swf. Your IDE gets this agent to start by editing your mm.cfg and adding a “PreloadSwf” line. The agent uses the flash.sampler.* API to gather data on your main swf, and sends it to the IDE using TCP on a preconvened port. This port is 9999 by default, you can change it in Preferences/Flex/Profiler/Connections.

If you can not get your profiler working, there are few methods you should try:

  • close all other tabs
  • install debug player
  • change browser
  • change port
  • disable firewall / antivirus
  • define PreloadSwf path
  • localhost /
  • allocate console
  • ultimate methods (what worked for me)

Read the rest of this entry »