- 浏览: 138160 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
http://jpauclair.net/mm-cfg-secrets/
(鉴于有些国外网站有时候突然就不能访问了,为了保险起见,还是复制过来了)
I knew for a long time now that flash had undocumented features, little part of flash that could help speed up process (like the memory opcodes) or make interaction easy with right click and that kind of things. But I never thought that FlashPlayer would hide data that could help find bugs, or give better knowledge of how flash is interpreted. As you may know, The mm.cfg files is located in: 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 complete list of features of mm.cfg is at the end of the post, but first lets talk about what’s most interesting. This 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? This one is totally crazy. This 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! This 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. This 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 This enable logging GPU information about current SWF while it runs. 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 AllowUserLocalTrust = 1|0 AS3AllocationTracking = 1|0 AS3AutoStartSampling = 1|0 AS3CSE = 1|0 AS3DCE = 1|0 AS3DynamicProfile = 1|0 AS3MIR = 1|0 AS3Sampling = 1|0 AS3SSE = 1|0 AS3StaticProfile = 1|0 AS3Trace = 1|0 AS3Turbo = 1|0 AS3Verbose = 1|0 AssetCacheSize=X AutoUpdateDisable = 1|0 AutoUpdateInterval = X AutoUpdateVersionUrl = [URL] AVHardwareDisable = 1|0 CodeSignLogFile CodeSignRootCert = 1|0 Convert8kAnd16kAudio = 1|0 CrashLogEnable = 1|0 DisableAVM1Loading = 1|0 DisableDeviceFontEnumeration = 1|0 DisableIncrementalGC = 1|0 DisableMulticoreRenderer = 1|0 DisableNetworkAndFilesystemInHostApp = 1|0 DisableProductDownload = 1|0 DisableSockets = 1|0 DisplayGPUBlend = 1|0 EnableIncrementalValidation = 1|0 EnableLeakFile = 1|0 EnableSocketsTo = [address] EnforceLocalSecurityInActiveXHostApp = 1|0 ErrorReportingEnable = 1|0 FileDownloadDisable = 1|0 FileUploadDisable = 1|0 ForceGPUBlend = 1|0 FrameProfilingEnable = 1|0 FullScreenDisable = 1|0 GCStats = 1|0 GPULogOutputFileName HeapProfilingAS3Enable = 1|0 LegacyDomainMatching = 1|0 LocalFileLegacyAction = 1|0 LocalFileReadDisable = 1|0 LocalStorageLimit = X LogGPU = 1|0 MaxWarnings = X OverrideGPUValidation = 1|0 OverrideUserInvokedActions = 1|0 PolicyFileLog = 1|0 PolicyFileLogAppend = 1|0 PreloadSwf?flashvar1=value&… ProductDisabled = 1|0 ProductDownloadBaseUrl ProfileFunctionEnable = 1|0 ProfilingOutputDirectory = [path] ProfilingOutputFileEnable = 1|0 RendererProfilingEnable = 1|0 RTMFPP2PDisable = 1|0 RTMFPTURNProxy = 1|0 ScriptStuckTimeout = X SecurityDialogReportingEnable = 1|0 SuppressDebuggerExceptionDialogs = 1|0 ThirdPartyStorage TraceOutputBuffered = 1|0 TraceOutputFileEnable = 1|0 TraceOutputFileName= [path] UseBrokerProcess = 1|0 WindowlessDisable = 1|0 This whole thing opens a new playground for hardcore programmer like me. I didn’t have time to work extensively on each features and I may have interpreted incorrectly certain things.
For example, most people use this file to set tracing parameters:
ErrorReportingEnable=1
TraceOutputFileEnable=1
TraceOutputFileName=c:\logs\flashlogs.txt
MaxWarnings=50The Treasure
I took my favorite 7 features and made detailed explanation with example for each one so here they are:TraceOutputBuffered = 1|0
Well this is a known bug. If you make a loop of 1 000 000 and you trace the iterator, the flashlog will skip thousand of entries and will take 100% of your CPU while writing to disk.
If you set this variable to true, the traces will be buffered and the write to disk will output multiple lines in one access.
Performance? By default (without this feature), I’m able to trace 3600 line in 6 seconds and my CPU is at 100%.
If I turn the features on, I can trace 1 000 000 lines in the same time! And my CPU is not even near 100%.
AS3Verbose = 1|0
It traces detailed information about SWF ByteCode structure and Runtime parsing of the bytecode!
You don’t need any software… no special framework to bind in your own SWF… just this one flag!
01
verify Main/CallFoo()
02
define incoming args
03
@0 arg 0
04
@1 arg 0
05
@2 arg 0
06
@3 arg 0
07
@4 arg 0
08
@5 arg 0
09
alloc local traits
10
@6 alloc 4
11
@7 alloc 8
12
alloc CallStackNode
13
@8 alloc 48
14
param 0
15
@9 ldop 0(@5)
16
@10 imm 4
17
debug_enter
18
@11 imm 0
19
@12 imm 1
20
@13 lea 0(@7)
21
@14 lea 0(@8)
22
@15 lea 0(@6)
23
save state
24
@16 def @9
25
@17 imm 165651400
26
@18 st 0(@6) <- @17
27
@19 usea @16
28
@20 st 0(@7) <- @19
29
@21 def @10
30
cse @11
31
@22 st 4(@7) <- @11
32
@23 cm MethodEnv::debugEnter (@3, @4, @5, @15, @12, @14, @13, @11)
33
@26 ld 164427072(0)
34
cse @11
35
@27 ucmp @26 @11
36
@28 jne @27 -> 0
37
@29 alloc 0
38
stack:
39
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]
40
locals: Main@16
41
0:debugfile "C:\Dev\src;;Main.as"
42
@30 imm 164421632
43
@31 ldop 44(@30)
44
@32 imm 165988864
45
save state
46
@33 cm Debugger::debugFile (@31, @32)
47
stack:
48
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]
49
locals: Main@16
50
2:debugline 29
51
cse @30
52
cse @31
53
@35 imm 29
54
save state
55
@36 cm Debugger::debugLine (@31, @35)
56
stack:
57
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]
58
locals: Main@16
59
4:getlocal0
60
@38 use @16 [0]
61
stack: Main@38
62
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$]
63
locals: Main@38
64
5:pushscope
65
stack:
66
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$] Main@38
67
locals: Main@38
68
6:debugline 31
69
cse @30
70
cse @31
71
@39 imm 31
72
save state
73
@40 def @38
74
@41 use @40 [0]
75
@42 st 4(@7) <- @41
76
@43 cm Debugger::debugLine (@31, @39)
77
stack:
78
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$] Main@40
79
locals: Main@16
80
8:pushbyte 3
81
@45 imm 3
82
stack: int@45
83
scope: [global Object$ flash.events::EventDispatcher$ flash.display::DisplayObject$ flash.display::InteractiveObject$ flash.display::DisplayObjectContainer$ flash.display::Sprite$ Main$] Main@40
84
locals: Main@16
85
10:returnvalue
86
cse @14
87
save state
88
@46 def @45
89
@47 cm MethodEnv::debugExit (@3, @14)
90
@49 use @46 [2]
91
@50 ret @49
92
@51 bb
AS3Trace = 1|0
It trace every single call to any function that is being called in the SWF at runtime!
It’s like expending the StackTrace to the full software run time.
01
1255552 AVMINF: MTHD ProfilerAgent/stopProfiling () @ 0x05DA35A0
02
1255552 AVMINF: MTHD global/flash.sampler::stopSampling () @ 0x0A8C2B20
03
1255553 AVMINF: MTHD flash.display::DisplayObject/get root () @ 0x0A8C06B0
04
1255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C2110
05
1255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C2110
06
1255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C2110
07
1255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C2110
08
1255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C2110
09
1255553 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C2110
10
1255553 AVMINF: MTHD flash.net::Socket/flush () @ 0x0A8C2AD0
11
1255553 AVMINF: MTHD flash.net::Socket/close () @ 0x0A8C2B70
12
1255553 AVMINF: MTHD flash.net::Socket/_init () @ 0x0A8C0DF0
13
1255553 AVMINF: MTHD flash.utils::Timer/stop () @ 0x0A8C2CB0
14
1255554 AVMINF: MTHD flash.utils::Timer/reset () @ 0x0A8C1B20
15
1255554 AVMINF: MTHD flash.utils::Timer/get running () @ 0x0A8C1C30
16
1255554 AVMINF: MTHD flash.net::Socket/internalClose () @ 0x0A8C2D00
17
1255554 AVMINF: MTHD flash.events::EventDispatcher/removeEventListener () @ 0x0A8C2110
18
1255554 AVMINF: MTHD flash.utils::Timer/stop () @ 0x0A8C2CB0
19
1255554 AVMINF: MTHD flash.system::System$/resume () @ 0x0A8C2D50
20
1256675 AVMINF: MTHD flash.utils::Timer/tick () @ 0x0A8C2DA0
21
1256675 AVMINF: MTHD flash.utils::Timer/_timerDispatch () @ 0x0A8C2FF0
22
1256675 AVMINF: MTHD flash.events::TimerEvent () @ 0x0A8C3040
23
1256675 AVMINF: MTHD flash.events::Event () @ 0x0A8C1AC0
24
1256675 AVMINF: MTHD Main/OnTimer () @ 0x00B70910
25
1256675 AVMINF: MTHD global/trace () @ 0x0A8C2170
26
MyTimer
27
1258705 AVMINF: MTHD flash.utils::Timer/tick () @ 0x0A8C2DA0
28
1258705 AVMINF: MTHD flash.utils::Timer/_timerDispatch () @ 0x0A8C2FF0
29
1258705 AVMINF: MTHD flash.events::TimerEvent () @ 0x0A8C3040
30
1258705 AVMINF: MTHD flash.events::Event () @ 0x0A8C1AC0
31
1258705 AVMINF: MTHD Main/OnTimer () @ 0x00B70910
32
1258705 AVMINF: MTHD global/trace () @ 0x0A8C2170
33
MyTimer
AS3StaticProfile = 1|0
At the end of execution, it also output a summary of all bytecode processed (For each opcode you have the number of occurrence, relatives importance, etc)
01
size profile Main/CallFoo
02
abc 12 mir 880 md 204
03
1773K mir/s 74K md/s 96% in compile during 854 micros
04
204 bytes from 55 MIR instructions 61 MD. max span 0 cse 7 dead 0
05
76 bytes of stack with 5 spills 5 steals 5 remats using 0 times
06
size profile Main/CallFooBar
07
abc 23 mir 1088 md 262
08
2386K mir/s 85K md/s 96% in compile during 921 micros
09
262 bytes from 68 MIR instructions 76 MD. max span 0 cse 10 dead 0
10
88 bytes of stack with 8 spills 7 steals 5 remats using 0 times
01
verified instructions 3395
02
verified code size 7441
03
cpool size 0
04
cpool int size 1
05
cpool uint size 0
06
cpool double size 0
07
cpool string size 568
08
cpool namespacesize 12
09
cpool namespace set size 0
10
cpool multiname size 75
11
methods size 20100
12
instances size 39
13
classes size 2
14
scripts size 8
15
bodies size 82873
16
17
18 0 % 36 B 0 % kill
18
5 0 % 5 B 0 % label
19
1 0 % 4 B 0 % ifngt
20
10 0 % 40 B 0 % jump
21
6 0 % 24 B 0 % iftrue
22
22 0 % 88 B 1 % iffalse
23
4 0 % 16 B 0 % ifeq
24
4 0 % 16 B 0 % ifne
25
2 0 % 8 B 0 % iflt
26
2 0 % 2 B 0 % pushwith
27
93 2 % 93 B 1 % popscope
28
2 0 % 2 B 0 % nextname
29
16 0 % 16 B 0 % pushnull
30
2 0 % 2 B 0 % pushundefined
31
79 2 % 158 B 2 % pushbyte
32
6 0 % 19 B 0 % pushshort
33
9 0 % 9 B 0 % pushtrue
34
6 0 % 6 B 0 % pushfalse
35
1 0 % 1 B 0 % pushnan
36
50 1 % 50 B 0 % pop
37
21 0 % 21 B 0 % dup
38
2 0 % 2 B 0 % swap
39
113 3 % 331 B 4 % pushstring
40
43 1 % 86 B 1 % pushint
41
11 0 % 22 B 0 % pushdouble
42
202 5 % 202 B 2 % pushscope
43
1 0 % 2 B 0 % pushnamespace
44
2 0 % 6 B 0 % hasnext2
45
143 4 % 382 B 5 % newfunction
46
60 1 % 216 B 2 % callproperty
47
102 3 % 102 B 1 % returnvoid
48
9 0 % 9 B 0 % returnvalue
49
13 0 % 26 B 0 % constructsuper
50
9 0 % 30 B 0 % constructprop
51
49 1 % 173 B 2 % callpropvoid
52
4 0 % 8 B 0 % newobject
53
5 0 % 10 B 0 % newarray
54
2 0 % 2 B 0 % newactivation
55
45 1 % 114 B 1 % newclass
56
391 11 % 1011 B 13 % findpropstrict
57
119 3 % 290 B 3 % findproperty
58
96 2 % 197 B 2 % getlex
59
158 4 % 432 B 5 % setproperty
60
18 0 % 36 B 0 % getlocal
61
18 0 % 36 B 0 % setlocal
62
2 0 % 2 B 0 % getglobalscope
63
9 0 % 18 B 0 % getscopeobject
64
365 10 % 938 B 12 % getproperty
65
174 5 % 443 B 5 % initproperty
66
2 0 % 4 B 0 % getslot
67
102 3 % 204 B 2 % setslot
68
6 0 % 6 B 0 % convert_i
69
11 0 % 11 B 0 % convert_u
70
11 0 % 11 B 0 % convert_b
71
6 0 % 14 B 0 % coerce
72
3 0 % 3 B 0 % coerce_a
73
7 0 % 7 B 0 % coerce_s
74
1 0 % 1 B 0 % negate
75
2 0 % 2 B 0 % increment
76
6 0 % 6 B 0 % not
77
6 0 % 6 B 0 % add
78
4 0 % 4 B 0 % subtract
79
1 0 % 1 B 0 % multiply
80
5 0 % 5 B 0 % divide
81
1 0 % 1 B 0 % lshift
82
3 0 % 3 B 0 % rshift
83
2 0 % 2 B 0 % bitand
84
2 0 % 2 B 0 % bitor
85
6 0 % 6 B 0 % equals
86
2 0 % 2 B 0 % lessthan
87
2 0 % 2 B 0 % greaterequals
88
1 0 % 1 B 0 % increment_i
89
275 8 % 275 B 3 % getlocal0
90
49 1 % 49 B 0 % getlocal1
91
36 1 % 36 B 0 % getlocal2
92
17 0 % 17 B 0 % getlocal3
93
13 0 % 13 B 0 % setlocal1
94
14 0 % 14 B 0 % setlocal2
95
11 0 % 11 B 0 % setlocal3
96
23 0 % 144 B 1 % abs_jump
97
54 1 % 330 B 4 % debug
98
168 4 % 456 B 6 % debugline
99
19 0 % 50 B 0 % debugfile
AS3DynamicProfile = 1|0
The statistics include count, cycles, %count, %times and CPI
fights between what operation is faster that the others? Cycle counts does not lies (on the same platform…)
* Request for Jackson Dunstan: Wanna work on that? *
But there is a problem with this one, it crash all the time.
My guess is it can’t process “Flash Object” like Movieclip, Event, and all the other and only support operation valid in tamarin.
01
total count=278 cycles=35508249 avg CPI=127727
02
user 1.9%
03
gc 0%
04
decoder 97.7%
05
verifier 1.6%
06
codegen 0.2%
07
count cycles %count %time CPI opcode
08
----- -------- ------- ------- --- ------
09
2 34714742 0.7 97.7 17357371 decode
10
211 602237 75.8 1.6 2854 verifyop
11
6 89138 2.1 0.2 14856 codegenop
12
3 78305 1.0 0.2 26101 newclass
13
7 4813 2.5 0.0 687 findpropstrict
14
6 3922 2.1 0.0 653 setslot
15
4 3260 1.4 0.0 815 initproperty
16
4 2724 1.4 0.0 681 getproperty
17
9 1859 3.2 0.0 206 getlocal0
18
4 1639 1.4 0.0 409 verifypass
19
2 1190 0.7 0.0 595 returnvoid
20
1 755 0.3 0.0 755 pushnamespace
21
3 745 1.0 0.0 248 abs_jump
22
2 550 0.7 0.0 275 findproperty
23
5 527 1.7 0.0 105 pushscope
24
1 403 0.3 0.0 403 pushnull
25
2 382 0.7 0.0 191 pushbyte
26
1 331 0.3 0.0 331 popscope
27
1 331 0.3 0.0 331 pushundefined
28
2 238 0.7 0.0 119 pushint
29
2 158 0.7 0.0 79 pushdouble
LogGPU = 1|0
Use GPULogOutputFileName = [path] to specify where to output that log.
Use DisplayGPUBlend = 1 to display the little green square while GPU runs
use ForceGPUBlend = 1 (At your own risk) to force GPU event if your videocard is not officially listed as valid for Flash GPU.
01
[GPU-BLEND] SUCEEDED to create D3D device
02
03
[GPU-BLEND]0x1161000 MONITOR/DEVICE SWITCH, old=0x0, new=0x18fd00
04
05
[GPU-BLEND]0x1161000 Started (wMode=GPU) on device 10de 402 (6.14.11.9062) NVIDIA GeForce 8600 GT mem:free=718, used=0
06
07
[GPU-BLEND]Begin render aa=4. Free TextureMem=712 Mb, Used = 5
08
[GPU-BLEND]Using 0x13b7080 as RT vp= 0 0 800 600, aa = 4
09
[GPU-BLEND]Clearing buffer 0x13b7080 { 0 0 800 600 } with color ffffffff
10
[GPU-BLEND]Filling border & background on 0x13b7080 3 3 11 11 with bo:ffffffff, ba:ff00ff00
11
[GPU-BLEND]Using 0x13b7080 as RT vp= 0 0 800 600, aa = 4
12
[GPU-BLEND]End render
13
14
[GPU-BLEND]0x1161000 Started (wMode=GPU) on device 10de 402 (6.14.11.9062) NVIDIA GeForce 8600 GT mem:free=716, used=0
15
16
[GPU-BLEND]Begin render aa=4. Free TextureMem=712 Mb, Used = 5
17
[GPU-BLEND]Using 0x11b7080 as RT vp= 0 0 800 600, aa = 4
18
[GPU-BLEND]Clearing buffer 0x11b7080 { 0 0 800 600 } with color ffffffff
19
[GPU-BLEND]Filling border & background on 0x11b7080 3 3 11 11 with bo:ffffffff, ba:ff00ff00
20
[GPU-BLEND]Using 0x11b7080 as RT vp= 0 0 800 600, aa = 4
21
[GPU-BLEND]End render
PreloadSwf?flashvar1=value&…
The default file is: C:/Documents and Settings/{USER}/My Documents/Flex Builder 3/.metadata/.plugins/com.adobe.flash.profiler/ProfilerAgent.swf?host=localhost&port=9999
The profiler agent is a SWF that use the as3 sampling classes to collect information and send them all over a socket connection to FlashBuilder.
FlashBuilder is only interpreting that data received from the SWF
By changing localhost by any other machine name you can connect to a remote FlashBuilder Profiler. On the Remote profiler you need to check the “wait for application” box and then start the local SWF on the other machine.
The Full List
undocumented features will be written in bold
Lets you prevent users from designating any files on local file systems as trusted.
Enable/Disable Profiling information (if turned off, we can’t profile Allocation in FlexBuilder anymore)
Specify if we need a feedback before starting the profiler or we start right away.
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
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
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)
Enable/Disable Profiling information (if turned off, FlashPlayer won’t keep information on Machine-dependant intermediate representation – NanoJIT)
Enable/Disable Profiling information (if turned off, we can’t profile in FlexBuilder anymore)
*My guess is it turns on and off SSE optimization
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
If turned on, ALL function called (at runtime) will be outputed in the flashlogs!
You should always use in conjonction with TraceOutputBuffered=1??
Trace detailed information about SWF ByteCode structure and Runtime parsing of the bytecode!
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.
Lets you prevent Flash Player from automatically checking for and installing updated versions.
Lets you specify how often to check for an updated version of Flash Player.
Lets you specify a precise server to look up for new flash version
Lets you prevent SWF files from accessing webcams or microphones.
??
??
??
??
If turned on, no SWF of version 8 and earlier can be loaded.
Lets you prevent information on installed fonts from being displayed.
Lets you enable/disable Garbage Collector Incremental policies (more info on the GC)
Lets you turn off multiple core rendering
Lets you prevent networking or file system access of any kind.
Lets you prevent native code applications that are digitally signed and delivered by Adobe from being downloaded.
Lets you enable or disable the use of the Socket.connect() and XMLSocket.connect() methods.
If set to 1, it will prevent GPU use even if the SWF context is setted to use GPU and your card support it.
??
??
Lets you create a whitelist of servers to which socket connections are allowed.
EnableSocketsTo = localhost.localdomain
EnableSocketsTo = 127.0.0.1Lets you enforce local security rules for a specified application.
Set the ErrorReportingEnable property to 1 to enable the debugger version of Flash Player to write error messages to the log file.
Lets you prevent the ActionScript FileReference API from performing file downloads.
Lets you prevent the ActionScript FileReference API from performing file uploads.
Force GPU blending even if you video card is not officialy supported (At your own risk!)
Enable/Disable Profiling information (if turned off, we can’t profile Frames in FlexBuilder anymore)
Lets you disable SWF files playing via a browser plug-in from being displayed in full-screen mode.
Enable/Disable Profiling information (if turned off, we can’t profile GC in FlexBuilder anymore)
Lets you specify the output file for the GPU informations
Enable/Disable Profiling information (if turned off, we can’t profile Heap in FlexBuilder anymore)
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.
Lets you specify how Flash Player determines whether to execute certain local SWF files that were originally produced for Flash Player 7 and earlier.
Lets you prevent local SWF files from having read access to files on local hard drives.
Lets you specify a hard limit on the amount of local storage that Flash Player uses (per domain) for persistent shared objects.
Lets you specify if you want to output debug GPU log
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.
Overrides validation of the requirements needed to implement GPU compositing.
??
Enables the logging of policy file messages.
Set the PolicyFileLogAppend property to 1 to save previous policy file log entries
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).
FlexBuilder is only interpreting that data.
PreloadSwf=C:/Documents and Settings/{USER}/My Documents/Flex Builder 3/.metadata/.plugins/com.adobe.flash.profiler/ProfilerAgent.swf?host=localhost&port=9999
By changing localhost by any other machine name you can connect to a remote FlashBuilder Profiler. On the Remote profiler you need to check the “wait for application” box and then start the local SWF on the other machine.Creates a list of ProductManager applications that users are not permitted to install or launch.
??
Enable/Disable Profiling information (if turned off, we can’t profile function in FlexBuilder anymore)
Specify where to save the ProfilerData file
Specify if we want to create a file containing all the profiler data (flashprof_1265745253708.dat)
Enable/Disable Profiling information (if turned off, we can’t profile in FlexBuilder anymore)
Specifies how the NetStream constructor connects to a server when a value is specified for peerID, the second parameter passed to the constructor.
Lets Flash Player make RTMFP connections through the specified TURN server in addition to normal UDP sockets.
Lets you specify the time after what the timeout (too much time running a script) exception will popup
Lets you specify whether the Security dialog should be visible or not.
Lets you specify whether the Error dialog should be visible or not.
Lets you specify whether third-party SWF files can read and write locally persistent shared objects.
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!)
Set TraceOutputFileEnable to 1 to enable the debugger version of Flash Player to write trace messages to the log file.
(Before Flash 9) Sets the location of the log file. By default, the debugger version of Flash Player writes error messages to a file named flashlog.txt, located in the same directory in which the mm.cfg file is located.
Lets you specify if you want to use elevated privileges or not (See the FlashPlayer update)
Lets you disable Floating Flash (ex: Ads)
Conclusion
A lot can be done with this new information:
If it’s the case please tell me and I’ll modify this post. If you do test or benchmark using this post information please post them as comment here and I’ll add the benchmark later in the post.
发表评论
-
Flex从swf中加载资源和类
2013-12-10 09:37 779需要为直播播放器做几个新的样式,想将每个样式的布局XML和 ... -
swf加载swf的一些问题
2013-03-20 17:31 7301,swfParent 加载 swfChild,如果有交互, ... -
NetStream appendBytes 一点经验
2013-03-20 16:25 2638最近在做基于 NetStream ... -
【译】HTML5还需要什么才能击败Flash(part 2)
2012-04-01 17:53 0What else does HTML5 need to ... -
【译】HTML5还需要什么才能击败Flash(part 1)
2012-04-01 16:36 1107What else does HTML5 need to de ... -
AS 函数作用域、函数闭包、限界方法
2012-03-30 10:21 1497作用域链(scope chain): 任何时候函数开始 ... -
在AS3中自定义全局方法
2012-03-29 11:17 994http://en.flash-ripper.com/2007 ... -
Flex Class object(类对象)构成、traits和prototype
2012-03-29 10:59 1590先贴张图: 每个矩形代表一个对象。CA代表class ... -
使用flex sdk3.6的asdoc遇到的问题及解决方法
2012-03-26 10:24 1987想要对一个组件项目导出asdoc。组件的sdk是3.6,但使用 ... -
UIComponent添加Image不显示
2012-03-18 17:32 1034在UIComponent中添加Image组件,图片不显示。 ... -
Flex优化技巧
2012-03-30 09:46 917http://www.jb51.net/article/182 ... -
Flex中多个柱状图和折线图的问题
2012-02-28 17:53 2020做了个柱状图和折线图的混合图表,2根3D的柱子,6根折线,遇到 ... -
AdvancedDatagrid的dataprovider属性
2012-02-22 10:15 863高级dataGrid的dataProvider的set方法里并 ... -
Sprite的宽高设置及Flex组件的混淆
2012-02-02 10:23 1713由于Bitmap和InteractiveObject同级,都继 ... -
Flex SDK3.5 PollingChannel.as 存在内存泄露bug的一种解决方法
2011-12-31 15:32 1321bug见前面的一篇文章: http://xltank.ite ... -
TextInput的ErrorString样式
2011-10-25 13:08 916http://blog.minidx.com/2008/05/ ... -
Flex trace() 保存路径
2011-10-08 17:11 1108http://help.adobe.com/en_US/fle ... -
给ItemRenderer传参
2011-08-18 17:19 1559给ItemRenderer传递初始参数,可以根据参数灵活生成I ... -
AdvancedDatagrid改变行的颜色
2011-08-16 15:25 1649最早我尝试重写AdvancedDatagrid的drawRow ... -
Flex匹配中文的正则
2011-08-08 10:39 992来源 :http://bbs.airia.cn/thread- ...
相关推荐
而`mm.cfg`文件则是Flash Player的一个配置文件,它包含了一些控制调试行为的参数。在这篇文章中,我们将深入探讨debug版Flash的特性和`mm.cfg`的存放规则。 首先,让我们了解debug版Flash Player的主要特点。与...
#### 三、mm.cfg文件配置详解 ##### 1. 文件位置 不同操作系统下的`mm.cfg`文件存放位置不同,具体如下表所示: | 操作系统 | 创建文件路径 | |----------|--------------| | Macintosh OS X | `/Library/...
使用包含核心JavaScript自动化界面的preload swf扩展名的路径设置'mm.cfg'文件。 请参阅此以获取您操作系统的文件位置。 在Windows上,该文件位于C:\Users\<YOUR>\mm.cfg 。 这是一个简单的mm.cfg,它可以激活...
3. 在指定路径下创建 mm.cfg 文件,内容如下: ```ini TraceOutPutFileName=C:\Documents and Settings\Administrator\Application Data\Macromedia\FlashPlayer\Logs\flashlog.txt ErrorReportingEnable=1 ...
内容概要:本文详细介绍了利用Matlab、YALMIP和CPLEX实现微电网两阶段鲁棒优化经济调度的方法。首先,主问题部分通过定义决策变量如机组出力、储能充放电状态等,建立目标函数以最小化总成本,并设置相应的约束条件。接着,子问题部分模拟最恶劣场景,通过引入不确定性和惩罚系数,最大化系统成本,从而找到系统的薄弱环节。两者通过列与约束生成算法(CCG)进行迭代优化,直至达到收敛条件。文中还提供了多个实战避坑指南,如变量维度对齐、CPLEX参数调优以及不确定性集合的选择等。 适合人群:从事电力系统优化研究的专业人士,尤其是对微电网调度感兴趣的工程师和技术研究人员。 使用场景及目标:适用于需要确保微电网在面对极端天气或其他不确定性因素时仍能稳定运行的情况。主要目标是在保障系统可靠性的前提下,降低运营成本,提高经济效益。 其他说明:文章不仅提供了详细的代码实现步骤,还包括了许多实用的经验分享和技巧提示,帮助读者更好地理解和应用两阶段鲁棒优化方法。此外,还强调了在实际应用中应注意的问题,如避免过度保守、合理设定不确定集参数等。
内容概要:本文介绍了H6逆变器拓扑结构及其离网和并网仿真模型的特点。H6逆变器采用六开关器件设计,支持非单位功率因数负载、功率因数调节、共模电流抑制等功能。文中详细讨论了PR单环控制策略、锁相环(SOGI-PLL)、LC和LCL滤波器的应用,并提供了相关代码示例。此外,文章还探讨了仿真环境设置以及常见调试技巧,验证了H6逆变器在不同负载条件下的优越性能。 适合人群:从事电力电子、逆变器设计与仿真的工程师和技术研究人员。 使用场景及目标:①理解和掌握H6逆变器的工作原理和控制策略;②优化逆变器的设计参数,提高其在离网和并网场景中的性能;③通过仿真验证设计方案的有效性和可靠性。 其他说明:本文提供了丰富的代码片段和调试经验分享,有助于读者快速上手H6逆变器的实际应用。
内容概要:本文详细介绍了松下FP-X系列PLC在空调冷冻泵模拟量控制中的应用,特别是AFPX-TC2模拟量输入模块和AFPX-DA2模拟量输出模块的使用方法。文章涵盖了硬件连接、手动控制程序、自动控制程序以及模式切换逻辑的设计。通过这些模块和程序,可以实现对冷冻泵转速的手动和自动控制,确保系统的稳定性和高效性。文中还提供了详细的代码示例和调试技巧,如PID参数调整、信号量程转换、无扰动模式切换等。 适合人群:从事工业自动化控制领域的工程师和技术人员,尤其是熟悉PLC编程和模拟量控制的人士。 使用场景及目标:适用于需要对空调冷冻泵进行精确控制的工程项目,旨在提高系统的响应速度和稳定性,减少人工干预,提升工作效率。 其他说明:文章不仅提供了理论指导,还包括了许多实用的经验和注意事项,如硬件接线细节、常见问题解决方法等,有助于读者快速掌握并应用于实际项目中。
内容概要:本文详细介绍了如何利用COMSOL软件在光子晶体超表面中实现偏离Gamma点的BICs(连续谱中的束缚态)合并。首先,作者通过设置偏离Gamma点的波矢,调整晶格参数如孔半径和晶格常数,成功实现了BICs的合并。接着,作者分享了多个实用技巧,如正确设置周期性边界条件、使用六重旋转对称条件以及优化网格划分方法。此外,文中提供了详细的MATLAB和COMSOL代码片段,帮助读者理解和复现实验结果。最后,作者强调了磁场涡旋对于识别BICs的重要性,并讨论了BICs合并过程中的一些反直觉现象及其背后的物理机制。 适合人群:从事光子晶体超表面研究的科研人员和技术爱好者,尤其是那些希望深入了解BICs合并机制并对COMSOL有一定基础的读者。 使用场景及目标:① 使用COMSOL进行光子晶体超表面的数值模拟;② 实现偏离Gamma点的BICs合并;③ 优化仿真参数以提高Q值和模式稳定性;④ 理解BICs合并的物理机制及其应用前景。 其他说明:本文不仅提供了理论指导,还附带了大量的实际操作步骤和代码示例,使读者能够快速上手并在实践中不断优化自己的模型。同时,作者提醒了一些常见的错误和注意事项,有助于避免不必要的调试时间。
分享一些R包,用于GBD数据库BAPC分析
内容概要:本文档详细介绍了A10 ACOS v4平台上的VRRP-A(高级虚拟路由器冗余协议)配置方法及其工作机制。VRRP-A旨在提高网络的高可用性和冗余度,支持多达八个ACOS设备作为IP互备份,适用于网关(路由)模式及单臂模式部署。文档涵盖了VRRP-A的基本概念、配置流程、主备选举机制、故障切换逻辑、浮动IP管理、配置同步、会话同步以及接口配置等内容。此外,还提供了具体的配置示例和故障切换策略模板的创建方法,以帮助管理员更好地理解和应用VRRP-A。 适合人群:具备一定网络基础知识,尤其是熟悉ACOS平台的网络管理员和工程师。 使用场景及目标:①实现多台ACOS设备之间的冗余备份,确保网络服务的连续性和稳定性;②通过配置浮动IP、主备选举、故障切换策略等,提升网络的高可用性;③利用配置同步和会话同步功能,简化管理和维护工作。 其他说明:本文档不仅提供了详细的配置指南,还通过具体示例展示了各种配置的实际操作步骤,帮助用户快速掌握VRRP-A的配置和优化技巧。此外,文档强调了VRRP-A与传统VRRP的区别,指出两者不可互操作,因此在实际部署中需要注意选择合适的协议。
内容概要:本文详细介绍了如何利用OpenSEES平台建立单柱墩模型,并深入探讨了钢筋与混凝土之间的滑移粘接及其捏缩效应。主要内容涵盖模型初始化、节点定义、边界条件设定、材料和截面定义、单元创建以及基于位移控制的滞回分析。文中提供了完整的建模过程和相关源代码,帮助读者理解并实现这一复杂结构的数值模拟。 适合人群:从事结构工程、土木工程及相关领域的研究人员和技术人员,特别是那些对钢筋混凝土结构的非线性行为感兴趣的学者。 使用场景及目标:适用于桥梁、建筑等基础设施的设计和评估,旨在提高结构在地震等极端荷载下的安全性和耐久性。通过模拟钢筋与混凝土间的粘接滑移现象,优化结构设计,增强抗震能力。 其他说明:文章不仅提供了理论背景,还包括大量实用的代码示例和实践经验分享,有助于读者快速掌握OpenSEES平台的应用技巧。同时,针对可能出现的问题给出了具体的解决方案,如收敛困难时的处理方法等。
黔轻职院团字〔2025〕5号关于开展2025年大学生社区实践计划工作的通知.zip
内容概要:本文详细介绍了基于Matlab/Simulink构建的100kW光伏发电三相并网系统的建模与仿真。系统主要包括100kW光伏模块及其MPPT控制、两级式并网逆变器(boost电路和三相桥式逆变)、复杂的控制策略(坐标变换、锁相环、dq功率控制、解耦控制、电流内环电压外环控制、SPWM调制)以及LC滤波器。文中不仅提供了详细的理论背景和技术实现方法,还展示了具体的仿真结果,验证了系统的性能。主要内容涵盖MPPT控制算法、逆变器拓扑结构、控制策略的设计与实现、LC滤波器的作用及效果评估。 适合人群:从事电力电子、新能源发电、控制系统设计的研究人员和工程师,特别是对光伏发电并网系统感兴趣的读者。 使用场景及目标:适用于希望深入了解光伏发电并网系统工作原理和控制策略的技术人员。目标是掌握如何利用Matlab/Simulink进行光伏发电系统的建模与仿真,提高系统的发电效率和稳定性。 其他说明:文章强调了各个组件之间的协同工作对于系统整体性能的影响,并提供了大量实用的代码片段和调试技巧,有助于读者更好地理解和应用所学知识。
内容概要:本文详细介绍了电导增量法(INC)在光伏发电系统中的最大功率点跟踪(MPPT)算法。首先解释了INC算法的核心逻辑,即通过电导变化量判断爬山方向,并讨论了关键参数如阈值、步长的选择及其对系统稳定性的影响。接着探讨了PWM调制的具体实现方式,强调了V_pv_max的实时获取重要性和自适应步长策略的应用。此外,还分享了一些实用的仿真技巧,如加入噪声处理、动态调整I-V曲线以及使用卡尔曼滤波提高跟踪精度。最后,通过实验数据验证了改进后的INC算法在不同光照条件下的优越性能。 适合人群:从事光伏系统研究与开发的技术人员,尤其是对MPPT算法感兴趣的工程师。 使用场景及目标:适用于需要深入了解和优化光伏系统MPPT算法的研究和开发工作,旨在提升光伏系统的能量转换效率。 其他说明:文中提供了大量代码片段和实践经验,帮助读者更好地理解和应用电导增量法。同时提醒读者关注一些常见的陷阱和技术细节,确保仿真的准确性和可靠性。
内容概要:本文详细介绍了裂缝检测中的数据标注方法,涵盖了目标检测和语义分割两大主要技术。对于目标检测部分,重点讲解了YOLO算法的数据标注流程,包括工具选择、标注操作以及保存格式。而对于语义分割,则深入探讨了像素级标注的具体步骤,涉及多边形绘制、掩码图像生成及其优化处理。此外,还分享了一些实战经验和技巧,如如何应对复杂裂缝形态、提高标注精度的方法等。 适合人群:从事计算机视觉领域的研究人员和技术人员,尤其是专注于物体检测和图像分割方向的专业人士。 使用场景及目标:①帮助开发者掌握裂缝检测数据标注的基本技能;②提供实用的操作指南,解决实际工作中遇到的各种难题;③为构建高效准确的裂缝检测模型奠定坚实的数据基础。 其他说明:文中不仅包含了理论知识,还附带了许多具体的代码实例,有助于读者更好地理解和应用相关技术。
内容概要:本文详细介绍了半车悬架主动控制系统中MPC(模型预测控制)的应用及其调参技巧。首先解释了MPC的基本概念,即通过优化未来一段时间内的性能指标来确定当前时刻的最佳控制输入。接着展示了具体的实现步骤,包括建立状态空间模型、定义性能指标函数和采用优化算法进行求解。文中特别强调了参数调优的经验,如预测时域和控制时域的选择、权重矩阵的设计以及约束条件的设置。此外,作者还分享了一些调试细节,例如QP求解器的选项设置和作动器延迟补偿的方法。最终的效果表明,MPC能够显著提高乘坐舒适性和操控稳定性。 适合人群:从事车辆工程、自动化控制领域的研究人员和技术人员,尤其是对悬架系统和MPC感兴趣的读者。 使用场景及目标:适用于需要提升汽车行驶品质的研究项目或产品开发,旨在通过先进的控制算法改善车辆的动态性能。 其他说明:文章提供了丰富的代码片段和实践经验,有助于读者更好地理解和应用MPC技术。同时提醒读者注意参数之间的相互影响,确保系统稳定可靠地运行。
内容概要:本文详细介绍了利用Simulink模型进行高频注入以实现电机电角度精确观测的方法和技术细节。首先,通过在d轴注入特定频率的正弦波电压信号,使高频信号与转子位置产生相互作用,从而携带角度信息。其次,采用低通和带通滤波器组合对信号进行处理,分别去除高频成分并提取有用的调制信号。最后,通过锁相环结构解调相位差,得到最终的角度估计。文中还讨论了不同频率选择的影响以及启动阶段的扫频注入优化方法,并分享了一些实际应用中的经验和注意事项。 适合人群:从事电机控制系统研究与开发的专业技术人员,特别是对无位置传感器控制感兴趣的工程师。 使用场景及目标:适用于需要提高电机控制精度的应用场合,特别是在低速条件下无法使用传统位置传感器的情况下。目标是通过高频注入技术实现对电机转子位置的高精度测量,进而提升整个系统的性能。 其他说明:文中提供了大量MATLAB/Simulink代码片段作为示例,帮助读者更好地理解和实现相关算法。同时强调了实际工程实践中可能遇到的问题及其解决方案,如信噪比优化、硬件干扰排除等。
1、文件说明: Centos8操作系统texlive-csquotes-7:20180414-23.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf texlive-csquotes-7:20180414-23.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
内容概要:本文详细介绍了风光储并网协同运行模型中的关键技术——双闭环控制策略和单极调制方法。双闭环控制策略由电流内环和电压外环构成,分别用于快速跟踪电流指令和维持输出电压稳定,确保并网电能质量。单极调制作为一种PWM技术,能够降低开关损耗,提高系统效率。文中还提供了具体的MATLAB代码示例和Simulink建模步骤,展示了如何在仿真环境中实现和优化这些控制策略。 适合人群:对风光储并网系统感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解风光储并网系统控制机制的研究者,旨在帮助他们掌握双闭环控制和单极调制的具体实现方法,从而应用于实际项目中,提高系统的稳定性和效率。 其他说明:文章不仅提供了理论解释,还包括了详细的代码示例和仿真指导,使读者能够在实践中加深理解。此外,文中还分享了一些实用的调试技巧和注意事项,如避免过冲、设置死区时间和选择合适的仿真求解器等。
内容概要:本文详细介绍了基于S7-200 Smart PLC的速度与频率同步控制程序,主要用于卷板材生产线和造纸设备。程序通过设置速度同步地址vw10作为基准,利用频率调整系数factor[i]实现1-15回路的频率同步。此外,还支持主从单机微调功能,确保各回路能够精确同步。文中提供了具体的代码示例,解释了如何通过简单逻辑实现多机同步,并强调了微调和异常检测的重要性。对于16-30回路,考虑到设备布局和负载差异,提出了相应的优化建议,如地址映射调整和滤波算法的应用。 适合人群:从事自动化控制系统开发的技术人员,尤其是熟悉PLC编程和变频器应用的专业人士。 使用场景及目标:①帮助技术人员理解和掌握S7-200 Smart PLC在卷板材生产线和造纸设备中的速度与频率同步控制方法;②提供实用的代码示例和技术细节,便于快速部署和调试;③提高生产线的稳定性和效率,降低故障发生率。 其他说明:本文不仅涵盖了基本的同步控制逻辑,还包括了许多实际应用中的经验和技巧,如微调处理、异常检测和滤波算法等,有助于解决实际工程中的常见问题。