|
Additional Info
|
shamelessly stolen from jpauclair.net/2010/02/10/mmcfg-treasure/ ( with a few modifications of course)
This file is interpreted when a Flash Player instance launches a SWF and gives indication of what should or shouldn’t be done. Many other options are specified in the Adobe FlashPlayer Admin Guide… but most of is NOT DOCUMENTED! There is a LOT of thing to talk about and many cutting edge tools to improve your understanding of flash. So let’s get into it The TreasureThe complete list of features of mm.cfg is at the end of the post, but first lets talk about what’s most interesting. TraceOutputBuffered = 1|0This feature is essential to the rest of all the cool features because they output A LOT of lines in the flashlog This is a very simple features but it change everything. Did you ever had problem tracing to many information and losing half of it in the flashlog? AS3Verbose = 1|0This one is totally crazy. click here to reveal output verify Main/CallFoo()define incoming args@0 arg 0@1 arg 0@2 arg 0@3 arg 0@4 arg 0@5 arg 0alloc local traits@6 alloc 4@7 alloc 8alloc CallStackNode@8 alloc 48param 0@9 ldop 0(@5)@10 imm 4debug_enter@11 imm 0@12 imm 1@13 lea 0(@7)@14 lea 0(@8)@15 lea 0(@6)save state@16 def @9@17 imm 165651400@18 st 0(@6) <- @17@19 usea @16@20 st 0(@7) <- @19@21 def @10cse @11@22 st 4(@7) <- @11@23 cm MethodEnv::debugEnter (@3, @4, @5, @15, @12, @14, @13, @11)@26 ld 164427072(0)cse @11@27 ucmp @26 @11@28 jne @27 -> 0@29 alloc 0stack:scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]locals: Main@160:debugfile "C:\Dev\src;;Main.as"@30 imm 164421632@31 ldop 44(@30)@32 imm 165988864save state@33 cm Debugger::debugFile (@31, @32)stack:scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]locals: Main@162:debugline 29cse @30cse @31@35 imm 29save state@36 cm Debugger::debugLine (@31, @35)stack:scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]locals: Main@164:getlocal0@38 use @16 [0]stack: Main@38scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]locals: Main@385:pushscopestack:scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$] Main@38locals: Main@386:debugline 31cse @30cse @31@39 imm 31save state@40 def @38@41 use @40 [0]@42 st 4(@7) <- @41@43 cm Debugger::debugLine (@31, @39)stack:scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$] Main@40locals: Main@168:pushbyte 3@45 imm 3stack: int@45scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$] Main@40locals: Main@1610:returnvaluecse @14save state@46 def @45@47 cm MethodEnv::debugExit (@3, @14)@49 use @46 [2]@50 ret @49@51 bbAS3Trace = 1|0This one is also very useful for debugging If you got a crash hard to find, you can turn this on and you will see ALL the last function executed that leaded to the crash. You can even see Timer Call and Events callbacks! Click to show Output 1255552 AVMINF: MTHD ProfilerAgent/stopProfiling () @ 0x05DA35A01255552 AVMINF: MTHD global/flash.sampler::stopSampling () @ 0x0A8C2B201255553 AVMINF: MTHD flash.display::DisplayObject/get root () @ 0x0A8C06B01255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C21101255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C21101255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C21101255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C21101255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C21101255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C21101255553 AVMINF: MTHD flash.net::Socket/flush () @ 0x0A8C2AD01255553 AVMINF: MTHD flash.net::Socket/close () @ 0x0A8C2B701255553 AVMINF: MTHD flash.net::Socket/_init () @ 0x0A8C0DF01255553 AVMINF: MTHD flash.utils::Timer/stop () @ 0x0A8C2CB01255554 AVMINF: MTHD flash.utils::Timer/reset () @ 0x0A8C1B201255554 AVMINF: MTHD flash.utils::Timer/get running () @ 0x0A8C1C301255554 AVMINF: MTHD flash.net::Socket/internalClose () @ 0x0A8C2D001255554 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C21101255554 AVMINF: MTHD flash.utils::Timer/stop () @ 0x0A8C2CB01255554 AVMINF: MTHD flash.system::System$/resume () @ 0x0A8C2D501256675 AVMINF: MTHD flash.utils::Timer/tick () @ 0x0A8C2DA01256675 AVMINF: MTHD flash.utils::Timer/_timerDispatch () @ 0x0A8C2FF01256675 AVMINF: MTHD flash.events::TimerEvent () @ 0x0A8C30401256675 AVMINF: MTHD flash.events::Event () @ 0x0A8C1AC01256675 AVMINF: MTHD Main/OnTimer () @ 0x00B709101256675 AVMINF: MTHD global/trace () @ 0x0A8C2170MyTimer1258705 AVMINF: MTHD flash.utils::Timer/tick () @ 0x0A8C2DA01258705 AVMINF: MTHD flash.utils::Timer/_timerDispatch () @ 0x0A8C2FF01258705 AVMINF: MTHD flash.events::TimerEvent () @ 0x0A8C30401258705 AVMINF: MTHD flash.events::Event () @ 0x0A8C1AC01258705 AVMINF: MTHD Main/OnTimer () @ 0x00B709101258705 AVMINF: MTHD global/trace () @ 0x0A8C2170MyTimerAS3StaticProfile = 1|0This flag enable Just in Time Compiler (NanoJIT) logs. It gives detailed information on function conversion, bytecode conversion, MIR (machine-dependent intermediate representation) created, memory used and many others. Click to show output size profile Main/CallFooabc 12 mir 880 md 2041773K mir/s 74K md/s 96% in compile during 854 micros204 bytes from 55 MIR instructions 61 MD. max span 0 cse 7 dead 076 bytes of stack with 5 spills 5 steals 5 remats using 0 timessize profile Main/CallFooBarabc 23 mir 1088 md 2622386K mir/s 85K md/s 96% in compile during 921 micros262 bytes from 68 MIR instructions 76 MD. max span 0 cse 10 dead 088 bytes of stack with 8 spills 7 steals 5 remats using 0 timesverified instructions 3395verified code size 7441cpool size 0cpool int size 1cpool uint size 0cpool double size 0cpool string size 568cpool namespacesize 12cpool namespace set size 0cpool multiname size 75methods size 20100instances size 39classes size 2scripts size 8bodies size 8287318 0 % 36 B 0 % kill5 0 % 5 B 0 % label1 0 % 4 B 0 % ifngt10 0 % 40 B 0 % jump6 0 % 24 B 0 % iftrue22 0 % 88 B 1 % iffalse4 0 % 16 B 0 % ifeq4 0 % 16 B 0 % ifne2 0 % 8 B 0 % iflt2 0 % 2 B 0 % pushwith93 2 % 93 B 1 % popscope2 0 % 2 B 0 % nextname16 0 % 16 B 0 % pushnull2 0 % 2 B 0 % pushundefined79 2 % 158 B 2 % pushbyte6 0 % 19 B 0 % pushshort9 0 % 9 B 0 % pushtrue6 0 % 6 B 0 % pushfalse1 0 % 1 B 0 % pushnan50 1 % 50 B 0 % pop21 0 % 21 B 0 % dup2 0 % 2 B 0 % swap113 3 % 331 B 4 % pushstring43 1 % 86 B 1 % pushint11 0 % 22 B 0 % pushdouble202 5 % 202 B 2 % pushscope1 0 % 2 B 0 % pushnamespace2 0 % 6 B 0 % hasnext2143 4 % 382 B 5 % newfunction60 1 % 216 B 2 % callproperty102 3 % 102 B 1 % returnvoid9 0 % 9 B 0 % returnvalue13 0 % 26 B 0 % constructsuper9 0 % 30 B 0 % constructprop49 1 % 173 B 2 % callpropvoid4 0 % 8 B 0 % newobject5 0 % 10 B 0 % newarray2 0 % 2 B 0 % newactivation45 1 % 114 B 1 % newclass391 11 % 1011 B 13 % findpropstrict119 3 % 290 B 3 % findproperty96 2 % 197 B 2 % getlex158 4 % 432 B 5 % setproperty18 0 % 36 B 0 % getlocal18 0 % 36 B 0 % setlocal2 0 % 2 B 0 % getglobalscope9 0 % 18 B 0 % getscopeobject365 10 % 938 B 12 % getproperty174 5 % 443 B 5 % initproperty2 0 % 4 B 0 % getslot102 3 % 204 B 2 % setslot6 0 % 6 B 0 % convert_i11 0 % 11 B 0 % convert_u11 0 % 11 B 0 % convert_b6 0 % 14 B 0 % coerce3 0 % 3 B 0 % coerce_a7 0 % 7 B 0 % coerce_s1 0 % 1 B 0 % negate2 0 % 2 B 0 % increment6 0 % 6 B 0 % not6 0 % 6 B 0 % add4 0 % 4 B 0 % subtract1 0 % 1 B 0 % multiply5 0 % 5 B 0 % divide1 0 % 1 B 0 % lshift3 0 % 3 B 0 % rshift2 0 % 2 B 0 % bitand2 0 % 2 B 0 % bitor6 0 % 6 B 0 % equals2 0 % 2 B 0 % lessthan2 0 % 2 B 0 % greaterequals1 0 % 1 B 0 % increment_i275 8 % 275 B 3 % getlocal049 1 % 49 B 0 % getlocal136 1 % 36 B 0 % getlocal217 0 % 17 B 0 % getlocal313 0 % 13 B 0 % setlocal114 0 % 14 B 0 % setlocal211 0 % 11 B 0 % setlocal323 0 % 144 B 1 % abs_jump54 1 % 330 B 4 % debug168 4 % 456 B 6 % debugline19 0 % 50 B 0 % debugfileAS3DynamicProfile = 1|0This one give dynamic information about the opcodes being called and gives statistic for each. My question is: Having access to the CPI (Cycle per instruction) will we be able to conclude all Click here to show sample output total count=278 cycles=35508249 avg CPI=127727user 1.9%gc 0%decoder 97.7%verifier 1.6%codegen 0.2%count cycles %count %time CPI opcode----- -------- ------- ------- --- ------2 34714742 0.7 97.7 17357371 decode211 602237 75.8 1.6 2854 verifyop6 89138 2.1 0.2 14856 codegenop3 78305 1.0 0.2 26101 newclass7 4813 2.5 0.0 687 findpropstrict6 3922 2.1 0.0 653 setslot4 3260 1.4 0.0 815 initproperty4 2724 1.4 0.0 681 getproperty9 1859 3.2 0.0 206 getlocal04 1639 1.4 0.0 409 verifypass2 1190 0.7 0.0 595 returnvoid1 755 0.3 0.0 755 pushnamespace3 745 1.0 0.0 248 abs_jump2 550 0.7 0.0 275 findproperty5 527 1.7 0.0 105 pushscope1 403 0.3 0.0 403 pushnull2 382 0.7 0.0 191 pushbyte1 331 0.3 0.0 331 popscope1 331 0.3 0.0 331 pushundefined2 238 0.7 0.0 119 pushint2 158 0.7 0.0 79 pushdoubleLogGPU = 1|0This enable logging GPU information about current SWF while it runs. Click here to reveal sample output [GPU-BLEND] SUCEEDED to create D3D device[GPU-BLEND]0x1161000 MONITOR/DEVICE SWITCH, old=0x0, new=0x18fd00[GPU-BLEND]0x1161000 Started (wMode=GPU) on device 10de 402 (6.14.11.9062) NVIDIA GeForce 8600 GT mem:free=718, used=0[GPU-BLEND]Begin render aa=4. Free TextureMem=712 Mb, Used = 5[GPU-BLEND]Using 0x13b7080 as RT vp= 0 0 800 600, aa = 4[GPU-BLEND]Clearing buffer 0x13b7080 { 0 0 800 600 } with color ffffffff[GPU-BLEND]Filling border & background on 0x13b7080 3 3 11 11 with bo:ffffffff, ba:ff00ff00[GPU-BLEND]Using 0x13b7080 as RT vp= 0 0 800 600, aa = 4[GPU-BLEND]End render[GPU-BLEND]0x1161000 Started (wMode=GPU) on device 10de 402 (6.14.11.9062) NVIDIA GeForce 8600 GT mem:free=716, used=0[GPU-BLEND]Begin render aa=4. Free TextureMem=712 Mb, Used = 5[GPU-BLEND]Using 0x11b7080 as RT vp= 0 0 800 600, aa = 4[GPU-BLEND]Clearing buffer 0x11b7080 { 0 0 800 600 } with color ffffffff[GPU-BLEND]Filling border & background on 0x11b7080 3 3 11 11 with bo:ffffffff, ba:ff00ff00[GPU-BLEND]Using 0x11b7080 as RT vp= 0 0 800 600, aa = 4[GPU-BLEND]End renderPreloadSwf?flashvar1=value&…This is mainly used by the FlashBuilder Profiler. When you launch a SWF profiling, FlashBuilder add this line to mm.cfg to make it run another SWF before the one you profile. This one is just crazy powerful: See: One SWF to rule them all! and New visual Profiler The Full Listundocumented features will be written in bold AllowUserLocalTrust = 1|0 Lets you prevent users from designating any files on local file systems as trusted. AS3AllocationTracking = 1|0 Enable/Disable Profiling information (if turned off, we can’t profile Allocation in FlexBuilder anymore) AS3AutoStartSampling = 1|0 Specify if we need a feedback before starting the profiler or we start right away. AS3CSE = 1|0 CSE is an acronym for “Common Subexpression Elimination”. It seems plausible that these may be employed by the Flash virtual machine to optimize the byte-code before executing AS3DCE = 1|0 DCE is an acronym for “Dead Code Elimination”. It seems plausible that these may be employed by the Flash virtual machine to optimize the byte-code before executing AS3DynamicProfile = 1|0 When enabling this (you might crash half the time) the flash player is going to collect precious profiling information on opcodes used in the Swf (count/Time/%/Cycles) AS3MIR = 1|0 Enable/Disable Profiling information (if turned off, FlashPlayer won’t keep information on Machine-dependant intermediate representation – NanoJIT) AS3Sampling = 1|0 Enable/Disable Profiling information (if turned off, we can’t profile in FlexBuilder anymore) AS3SSE = 1|0 *My guess is it turns on and off SSE optimization AS3StaticProfile = 1|0 Information Generated by NanoJit (just in time compiler used in Tamarin), including a lot of statistic on code conversion, time to process and memory use AS3Trace = 1|0 If turned on, ALL function called (at runtime) will be outputed in the flashlogs! AS3Turbo = 1|0 ?? AS3Verbose = 1|0 Trace detailed information about SWF ByteCode structure and Runtime parsing of the bytecode! AssetCacheSize=X Lets you specify a hard limit, in MB, on the amount of local storage that Flash Player uses for the storage of common Flash components. AutoUpdateDisable = 1|0 Lets you prevent Flash Player from automatically checking for and installing updated versions. AutoUpdateInterval = X Lets you specify how often to check for an updated version of Flash Player. AutoUpdateVersionUrl = [URL] Lets you specify a precise server to look up for new flash version AVHardwareDisable = 1|0 Lets you prevent SWF files from accessing webcams or microphones. CodeSignLogFile ?? CodeSignRootCert = 1|0 ?? Convert8kAnd16kAudio = 1|0 ?? CrashLogEnable = 1|0 ?? DisableAVM1Loading = 1|0 If turned on, no SWF of version 8 and earlier can be loaded. DisableDeviceFontEnumeration = 1|0 Lets you prevent information on installed fonts from being displayed. DisableIncrementalGC = 1|0 Lets you enable/disable Garbage Collector Incremental policies (more info on the GC) DisableMulticoreRenderer = 1|0 Lets you turn off multiple core rendering DisableNetworkAndFilesystemInHostApp = 1|0 Lets you prevent networking or file system access of any kind. DisableProductDownload = 1|0 Lets you prevent native code applications that are digitally signed and delivered by Adobe from being downloaded. DisableSockets = 1|0 Lets you enable or disable the use of the Socket.connect() and XMLSocket.connect() methods. DisplayGPUBlend = 1|0 If set to 1, it will prevent GPU use even if the SWF context is setted to use GPU and your card support it. EnableIncrementalValidation = 1|0 ?? EnableLeakFile = 1|0 ?? EnableSocketsTo = [address] Lets you create a whitelist of servers to which socket connections are allowed. EnforceLocalSecurityInActiveXHostApp = 1|0 Lets you enforce local security rules for a specified application. ErrorReportingEnable = 1|0 Set the ErrorReportingEnable property to 1 to enable the debugger version of Flash Player to write error messages to the log file. FileDownloadDisable = 1|0 Lets you prevent the ActionScript FileReference API from performing file downloads. FileUploadDisable = 1|0 Lets you prevent the ActionScript FileReference API from performing file uploads. ForceGPUBlend = 1|0 Force GPU blending even if you video card is not officialy supported (At your own risk!) FrameProfilingEnable = 1|0 Enable/Disable Profiling information (if turned off, we can’t profile Frames in FlexBuilder anymore) FullScreenDisable = 1|0 Lets you disable SWF files playing via a browser plug-in from being displayed in full-screen mode. GCStats = 1|0 Enable/Disable Profiling information (if turned off, we can’t profile GC in FlexBuilder anymore) GPULogOutputFileName Lets you specify the output file for the GPU informations HeapProfilingAS3Enable = 1|0 Enable/Disable Profiling information (if turned off, we can’t profile Heap in FlexBuilder anymore) LegacyDomainMatching = 1|0 Lets you specify whether SWF files produced for Flash Player 6 and earlier can execute an operation that has been restricted in a newer version of Flash Player. LocalFileLegacyAction = 1|0 Lets you specify how Flash Player determines whether to execute certain local SWF files that were originally produced for Flash Player 7 and earlier. LocalFileReadDisable = 1|0 Lets you prevent local SWF files from having read access to files on local hard drives. LocalStorageLimit = X Lets you specify a hard limit on the amount of local storage that Flash Player uses (per domain) for persistent shared objects. LogGPU = 1|0 Lets you specify if you want to output debug GPU log MaxWarnings = X The default value of the MaxWarnings property is 100. After 100 messages, the debugger version of Flash Player writes a message to the file stating that further error messages will be suppressed. OverrideGPUValidation = 1|0 Overrides validation of the requirements needed to implement GPU compositing. OverrideUserInvokedActions = 1|0 ?? PolicyFileLog = 1|0 Enables the logging of policy file messages. PolicyFileLogAppend = 1|0 Set the PolicyFileLogAppend property to 1 to save previous policy file log entries PreloadSwf?flashvar1=value&… Lets you specify a SWF to be loaded before the main swf.This is the profiler agent, a little flash app (ProfilerAgent.swf) that connect to the FlexBuilder Profiler via socket (localhost:9999). ProductDisabled = 1|0 Creates a list of ProductManager applications that users are not permitted to install or launch. ProductDownloadBaseUrl ?? ProfileFunctionEnable = 1|0 Enable/Disable Profiling information (if turned off, we can’t profile function in FlexBuilder anymore) ProfilingOutputDirectory = [path] Specify where to save the ProfilerData file ProfilingOutputFileEnable = 1|0 Specify if we want to create a file containing all the profiler data (flashprof_1265745253708.dat) RendererProfilingEnable = 1|0 Enable/Disable Profiling information (if turned off, we can’t profile in FlexBuilder anymore) RTMFPP2PDisable = 1|0 Specifies how the NetStream constructor connects to a server when a value is specified for peerID, the second parameter passed to the constructor. RTMFPTURNProxy = 1|0 Lets Flash Player make RTMFP connections through the specified TURN server in addition to normal UDP sockets. ScriptStuckTimeout = X Lets you specify the time after what the timeout (too much time running a script) exception will popup SecurityDialogReportingEnable = 1|0 Lets you specify whether the Security dialog should be visible or not. SuppressDebuggerExceptionDialogs = 1|0 Lets you specify whether the Error dialog should be visible or not. ThirdPartyStorage Lets you specify whether third-party SWF files can read and write locally persistent shared objects. TraceOutputBuffered = 1|0 Specify the flash player to use a buffer before writing to disk. If you had problem when tracing tousands of lines and line were skipped, this solve the thing. It’s also a lot faster (1000000 trace in 7 seconds instead of 3200 trace in 7 sec!) TraceOutputFileEnable = 1|0 Set TraceOutputFileEnable to 1 to enable the debugger version of Flash Player to write trace messages to the log file. TraceOutputFileName= [path] !OBSOLETE! The following table shows the flashlog.txt file location:
Lets you specify if you want to use elevated privileges or not WindowlessDisable = 1|0 Lets you disable Floating Flash (ex: Ads) I use this AoB tool to make all the AoBs I post. Try the online version if you dont feel like downloading it. |
|
Additional Info
|
first of all, this post is so horibly broken it pains me. your l33th4x isnt even on the same line as the other banners. theres a huge ass scroll bar on the bottom as well. and the code black square things extends as far as the longest line so theres a fuckton of empty black space.
|
|
Additional Info
|
interesting. It seems tims post cleaner cleaned out all the paragraph tags and page breaks lol. I use this AoB tool to make all the AoBs I post. Try the online version if you dont feel like downloading it. |