fdbã使ã£ã¦ã¿ã
Flex2SDKã«ã¯ãfdbã¨ãããããã¬ãä»éãã¦ãã¾ãããããã¬ã¨ã¯ãè¦ã¯ãã°åãã®æå©ãã¨ãªããã¼ã«ã®ãã¨ã§ããã³ã¼ããä¸ã¤ä¸ã¤å¦çã®é ã«è¿½ã£ã¦ç¢ºèªããªããå®è¡ãã¦ããã¨ã«ãã£ã¦ã誤åä½ããã¦ãããã¤ã³ããè¦ã¤ããã®ã«å½¹ã«ç«ã¡ã¾ãã
ä»åã¯ãã®fdbã®åºæ¬çãªä½¿ãæ¹ãæ¸ãã¦ããã¾ãã
ã¯ããã«
ã¨ããããä»åã¯ä»¥ä¸ã®ãããªããã°ã©ã ãåããã¦ã¿ã¾ãã
ã¡ã¤ã³ã¨ãªãTest.as
package { import flash.display.Sprite; public class Test extends Sprite { public function Test() { super(); var j:Jo = new Jo(); var d:Da = new Da(); for (; ; ) { if (j.question(d.getAnswer())) { break; } } for (; ; ) { if (d.body(j.getOra())) { break; } } trace("ãããã"); } } }
Jo.as
package { public class Jo { private var _punch:String; public function Jo() { _punch = "ãããã»ã¼"; } public function question(answer:String):Boolean { trace(answer); if (answer != _punch) { trace("NOï¼ãNOï¼ãNOï¼ãNOï¼ãNOï¼"); return false; } trace("YESï¼ãYESï¼ãYESï¼ãYESï¼ãY E S ï¼"); return true; } public function getOra():String { return "ãªã©"; } } }
Da.as
package { public class Da { private var _aCount:uint; private var _oCount:uint; public function Da() { _aCount = 0; _oCount = 0; } public function getAnswer():String { ++_aCount; if (_aCount == 1) { return "å³"; } else if (_aCount == 2) { return "å·¦"; } return "ãããã»ã¼"; } public function body(ora:String):Boolean { if (++_oCount > 11) { trace("ãââz___ã³"); return true; } trace(ora); return false; } } }
ã¤ã¥ãã¦ãããããããã°ãªãã·ã§ã³ãä»ãã¦ã³ã³ãã¤ã«ãã¾ãã
mxmlc Test.as -compiler.debug
ããã§æºåOKã
ãããã°ãã
å ã»ã©ã³ã³ãã¤ã«ãã¦åºåãããswfãæ¸¡ãã¦fdbãèµ·åãã¾ãã
fdb Test.swf
ããã¨ãfdbãèµ·åãã¦ãªãã¡ããããã¡ããã¨ã¡ãã»ã¼ã¸ãåºã¾ãã
D:\Test\src>fdb Test.swf Adobe fdb (Flash Player Debugger) [ãã«ã 155542] Copyright (c) 2004-2006 Adobe, Inc. All rights reserved. URL ã使ç¨ã㦠Player ãèµ·åããæ¥ç¶ãããã¨ãã¦ãã¾ã Test.swf Player ãæ¥ç¶ããã¾ãããã»ãã·ã§ã³ãéå§ãã¦ãã¾ãã ãã¬ã¼ã¯ãã¤ã³ããè¨å®ãã¦ãcontinueãã¨å ¥åããã»ãã·ã§ã³ãåéãã¦ãã ããã [SWF] D:\Test\src\Test.swf - 1,949 ãã¤ã (è§£åå¾) (fdb)
ãã¨ã¯ãã®ä¸çªä¸ã®(fdb)ã®å¾ã«ã³ãã³ããå ¥åãã¦ãããã¨ã§ãããã°ãè¡ãã¾ãã
ãã¬ã¼ã¯ãã¤ã³ãè¨å®
ã¾ãã¯ããã«ããinfo sourceããå ¥åãã¦ããã¡ã¤ã«ã®ä¸è¦§ã表示ãã¾ãã
(fdb) info sources Da.as#2 Jo.as#3 Test.as#1
ããããã®ãã¡ã¤ã«ã«çªå·ãã¤ãã¦ã¾ããã
ç¶ãã¦å¦çã䏿忢ãããã¬ã¼ã¯ãã¤ã³ããè¨å®ãã¾ããè¨å®ããã«ã¯ãbreakãã³ãã³ãã使ç¨ãã¾ããä»åã¯Test.asã®ã³ã³ã¹ãã©ã¯ã¿ããå³è¡åæ¢ããããã®ã§ãã³ã³ã¹ãã©ã¯ã¿ã®æåã§ãã7è¡ç®ã«ãã¬ã¼ã¯ãã¤ã³ããè¨å®ãããã¨æãã¾ãããã¡ã¤ã«ã®æå®ã«ã¯ä¸è¨ã®çªå·ããã:ãã§æãã§è¡çªå·ãæå®ãã¾ãã
(fdb) break #1:7 ãã¬ã¼ã¯ãã¤ã³ã 1 : ãã¡ã¤ã« Test.asãè¡çªå· 7
ããã§å®è¡ããæºåãã§ãã¾ããã
ã¨ãããã¨ã§æ©éãcontinueããå
¥åãã¦ãå¦çãéå§ããã¾ãã
(fdb) continue çç± : ãã¬ã¼ã¯ãã¤ã³ã 1ã颿°å : Test$iinit()ãå ´æ : Test.as:7 7 public function Test()
äºå®éããã³ã³ã¹ãã©ã¯ã¿ã®æåã§å¦çã䏿忢ãã¾ããã
ã¤ãã§ã«ããlistããå ¥åããã¨ãç¾å¨ã®å¦çã®å°ç¹ã®å¨è¾ºã®ã½ã¼ã¹ã表示ãã¦ããã¾ããä»ã®ç¶æ ã ã¨ã覧ã®ããã«ãªãã¾ãã
(fdb) list 2 { 3 import flash.display.Sprite; 4 5 public class Test extends Sprite 6 { =7 public function Test() 8 { 9 super(); 10 11 var j:Jo = new Jo();
ã=ãã®é¨åãå¦çå°ç¹ã§ããã
stepãnextãfinish
ããã§ã¯ã忢ãããå°ç¹ãã1ã¤ãã¤å¦çãå®è¡ãã¦ããã¾ãããã
ãããã¬ã§ã®å¦çã®é²ãæ¹ã«ã¯3種é¡ããã¾ãã
- stepãã颿°å é¨ã«é²ãã§ã¹ãããã
- nextãã颿°å é¨ã«ã¯é²ã¾ãããã®ã¾ã¾é¢æ°ãéãæãã¦ã¹ãããã
- finishãç¾å¨å¦çãè¡ã£ã¦ãã颿°ã®å¦ççµäºã¾ã§é²ãã§ã¹ãããã
ã¾ããæå³ã¯å®éã«è¦ã¦ãããããã¨æãã¾ãã
ã¾ãã¯stepãå ã»ã©ã®ç¶æ ã§ãstepã9åã»ã©å®è¡ãã¾ãã
(fdb) step 9 super(); (fdb) step 11 var j:Jo = new Jo(); (fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : global$init()ãå ´æ : Jo.as:3 3 public class Jo (fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : Test$iinit()ãå ´æ : Test.as:11 11 var j:Jo = new Jo(); (fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : Jo$iinit()ãå ´æ : Jo.as:7 7 public function Jo() (fdb) step 8 { (fdb) step 9 _punch = "ãããã»ã¼"; (fdb) step 10 } (fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : Test$iinit()ãå ´æ : Test.as:11 11 var j:Jo = new Jo();
super()ã¯ç¡è¦ãã¦ããã£ã¦ãã¯ã©ã¹ã¤ã³ã¹ã¿ã³ã¹ã®çæé¨åã«æ³¨ç®ãã¦ãã ããããJoã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹çæãããã³ã³ã¹ãã©ã¯ã¿å®è¡ãããJoã®ããããã£è¨å®ãã®æµããåããã§ããããããããstepã®åä½ã§ãã颿°å
é¨ã«æ¸¡ã£ã¦ããã¹ã¦ãã©ã£ã¦1ã¤ãã¤å®è¡ãã¦ããã¾ãã
ã¨ãã£ã¦ãã¾ã ãã¾ãã¡åããã«ããã¨æãã¾ãã®ã§ã次ã®nextãè¦ã¦ãã ãããstepã®åä½ã®æã¨æ¯ã¹ã¦ãã ããã
(fdb) step 12 var d:Da = new Da(); (fdb) next 16 if (j.question(d.getAnswer())) (fdb) list 11 var j:Jo = new Jo(); 12 var d:Da = new Da(); 13 14 for (; ; ) 15 { =16 if (j.question(d.getAnswer())) 17 { 18 break; 19 } 20 }
ä¸åº¦stepãå®è¡ãã¦ãDaã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹çæé¨åã¾ã§ç§»åãã¦ãã¾ããæ¬¡ã«nextãå®è¡ãã¦ãã¾ããlistã®çµæã§åããã¨ãããnew Da()ã®è¡ãé£ã°ãã¦ã次ã®å¦çé¨åã§ããifã®ã¨ããã¸ãã£ãã¨ç§»åãã¦ãã¾ãã¾ããããããnextã®åä½ã§ããstepã¯é¢æ°å
é¨ã¸å
¥ãã¾ããããnextã¯å
é¨ã¸ã¯å
¥ãããæ¬¡ã®å¦çé¨åã¾ã§ç§»åãã¾ããã
finishã¯å¾ã»ã©ã§ã¦ãã¾ãã
ç¶ãã¦ãå°ã å¦çããããããããªãã®if(j.question(d.getAnswer())é¨åã§ãããããstepã飿ããã¨ãå¦çã®é åºãåãããããã¨æãã¾ãã
(fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : getAnswer()ãå ´æ : Da.as:14 14 public function getAnswer():String (fdb) step 16 ++_aCount; (fdb) step 17 if (_aCount == 1) (fdb) step 19 return "å³"; (fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : Test$iinit()ãå ´æ : Test.as:16 16 if (j.question(d.getAnswer())) (fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : question()ãå ´æ : Jo.as:12 12 public function question(answer:String):Boolean (fdb) step 14 trace(answer); (fdb) step [trace] å³ 15 if (answer != _punch) (fdb) step 17 trace("NOï¼ãNOï¼ãNOï¼ãNOï¼ãNOï¼"); (fdb) step [trace] NOï¼ãNOï¼ãNOï¼ãNOï¼ãNOï¼ 18 return false;
ã¾ãã¯d.getAnswer()ãå®è¡ãããç¶ãã¦j.question()ãå®è¡ããããã¨ãåããã¾ãã
ãã¨ãtraceã®çµæãã[trace] å³ãã¨ãã風ã«è¡¨ç¤ºããã¦ãã¾ããããããããã°ã®åºæ¬ã§ããã
ã¤ã¥ãã¦finishã使ã£ã¦ã¿ã¾ãã
ããã»ã©ã®ç¶æ
ããstepã2åå®è¡ãã¦ãgetAnswer()å
ã«å
¥ã£ã¦ãã ããã
(fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : Test$iinit()ãå ´æ : Test.as:16 16 if (j.question(d.getAnswer())) (fdb) step çç± : å®è¡ã䏿¢ããã¾ããã颿°å : getAnswer()ãå ´æ : Da.as:14 14 public function getAnswer():String
ãã®ç¶æ ã§ãã¾ãstepãnextã§getAnswerå ãèµ°æ»ããã®ã¯ã¡ãã£ã¨é¢å...ã¨ããã¨ããfinishã使ãã°é¢æ°ãããã£ãã¨è±åºã§ãã¾ãã
(fdb) finish çç± : å®è¡ã䏿¢ããã¾ããã颿°å : Test$iinit()ãå ´æ : Test.as:16 16 if (j.question(d.getAnswer()))
ã¡ãã£ã¨åããã«ããã§ãããgetAnswerãå®è¡ãçµãã£ã¦ãã¾ãifæã®ã¨ããã¸æ»ã£ã¦ãã¾ãããããã§å¦çã忢ãã¦ãã¾ãããããfinishã®åä½ã§ãã
ãã¨ã¯é©å½ã«stepãªãnextãªããå ¥åãã¦ä¸éãå¦çãçµãã¦ã¿ã¦ãã ããããã®Testã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãå®è¡ãçµããã¨ãFlashPlayerã®ã¦ã¤ã³ãã¦ãåºç¾ããã¨æãã¾ãããã®ã¿ã¤ãã³ã°ã§ã¦ã¤ã³ãã¦ã表示ããã¦ããã§ãããã
ãããã«
ãããã°ã®åºæ¬ã¯ãã®ç¨åº¦ã§ããå¦çã®æµãã追ãã ãã§ãçµæ§é£è§£ãªãã°ã®åå ãç¹å®ã§ããããã¾ããã¾ãã夿°ã®å 容ã表示ããããè¨å®ããããã§ããã®ã§ãã¾ãhelpã³ãã³ããå®è¡ãã¦ä¸è¦§ãã¿ã¦ã¿ãã¨è¯ãããããã¾ããã
(fdb) help fdb ãåãã¦ä½¿ç¨ããå ´åã¯ã'tutorial' ãå®è¡ããåºæ¬æ å ±ã確èªãã¦ãã ããã fdb ã³ãã³ãã®ä¸è¦§ : bt (bt) ãã¹ã¦ã®ã¹ã¿ãã¯ãã¬ã¼ã ã®ããã¯ãã¬ã¼ã¹ãããªã³ããã¾ãã break (b) æå®ãããè¡ã¾ãã¯é¢æ°ã«ãã¬ã¼ã¯ãã¤ã³ããè¨å®ãã¾ãã cf (cf) ç¾å¨ã®ãã¡ã¤ã«ã®ååã¨çªå·ã表示ãã¾ãã clear (cl) æå®ãããè¡ã¾ãã¯é¢æ°ã®ãã¬ã¼ã¯ãã¤ã³ããã¯ãªã¢ãã¾ãã condition (cond) ãã¬ã¼ã¯ãã¤ã³ãã«å¯¾ããæ¡ä»¶å¼ãé©ç¨ã¾ãã¯åé¤ãã¾ãã continue (c) ãã¬ã¼ã¯ãã¤ã³ãã§åæ¢ããå¾ã«å®è¡ãç¶è¡ãã¾ãã commands (com) ãã¬ã¼ã¯ãã¤ã³ãã«éããã¨ãã«å®è¡ããã³ãã³ããè¨å®ãã¾ãã delete (d) ãã¬ã¼ã¯ãã¤ã³ãã¾ã㯠auto-display å¼ãåé¤ãã¾ãã directory (dir) ã½ã¼ã¹ãã¡ã¤ã«ã®æ¤ç´¢ãã¹ã«ãã£ã¬ã¯ããªã追å ãã¾ãã disable (disab) ãã¬ã¼ã¯ãã¤ã³ãã¾ã㯠auto-display å¼ãç¡å¹ã«ãã¾ãã disassemble (disas) ã½ã¼ã¹è¡ã¾ãã¯é¢æ°ãéã¢ã»ã³ãã«ãã¾ãã display (disp) auto-display å¼ã追å ãã¾ãã enable (e) ãã¬ã¼ã¯ãã¤ã³ãã¾ã㯠auto-display å¼ãæå¹ã«ãã¾ãã file (fil) ãããã°ããã¢ããªã±ã¼ã·ã§ã³ãæå®ãã¾ãã finish (f) ç¾å¨ã®é¢æ°ãè¿ãããã¾ã§å®è¡ãã¾ãã handle (han) 失æã®å¦çæ¹æ³ãæå®ãã¾ãã help (h) fdb ã³ãã³ãã«é¢ãããã«ãã表示ãã¾ãã home (ho) å®è¡ã䏿¢ããç®æã«ãªã¹ãã®å ´æãè¨å®ãã¾ãã info (i) ãããã°ä¸ã®ããã°ã©ã ã«é¢ããæ å ±ã表示ãã¾ãã kill (k) ãããã°ä¸ã®ããã°ã©ã ã®å®è¡ãå¼·å¶çµäºãã¾ãã list (l) æå®ãã颿°ã¾ãã¯è¡ãä¸è¦§è¡¨ç¤ºãã¾ãã next (n) ããã°ã©ã ãæ¬¡ã®æ®µéã«é²ãã¾ãã print (p) 夿° EXP ã®å¤ãããªã³ããã¾ãã pwd (pw) 使¥ãã£ã¬ã¯ããªãããªã³ããã¾ãã quit (q) fdb ãçµäºãã¾ãã run (r) ãããã°ããããã°ã©ã ãèµ·åãã¾ãã set (se) 夿°ã®å¤ãè¨å®ãã¾ãã source (so) ãã¡ã¤ã«ãã fdb ã³ãã³ããèªã¿åãã¾ãã step (s) å¥ã®ã½ã¼ã¹è¡ã«éããã¾ã§ãããã°ã©ã ãé²ãã¾ãã tutorial (t) fdb ã®ä½¿ç¨æ¹æ³ã«é¢ãããã¥ã¼ããªã¢ã«ã表示ãã¾ãã undisplay (u) auto-display å¼ãåé¤ãã¾ãã viewswf (v) swf ã«åºã¥ãã¦ããã¡ã¤ã«ã®ä¸è¦§è¡¨ç¤ºã®ãã£ã«ã¿ãè¨å®ã¾ãã¯ã¯ãª ã¢ãã¾ãã what (wh) 夿°ã®ã³ã³ããã¹ãã表示ãã¾ãã where (w) bt ã¨åãã§ãã 詳細ã確èªããã«ã¯ã'help' ã®å¾ã«ã³ãã³ãåãå ¥åãã¾ãã
ã¡ãªã¿ã«ä»åã®ããã°ã©ã ã®åºåã¯ä»¥ä¸ã®éãã
å³
NOï¼ãNOï¼ãNOï¼ãNOï¼ãNOï¼
å·¦
NOï¼ãNOï¼ãNOï¼ãNOï¼ãNOï¼
ãããã»ã¼
YESï¼ãYESï¼ãYESï¼ãYESï¼ãY E S ï¼
ãªã©
ãªã©
ãªã©
ãªã©
ãªã©
ãªã©
ãªã©
ãªã©
ãªã©
ãªã©
ãªã©
ãââz___ã³
ãããã
追è¨(2007/7/10)
fdbã®ãªãã¸ã§ã¯ãã®è¡¨ç¤ºã®ä»æ¹ã¯ãã¡ãã
ã「fdb」オブジェクト出力メモã