2008-10-09 36 views
8

Yayınlanan swf'in bir hata ayıklama yürütücüsünde veya Flash'ın hata ayıklama modunda çalışıp çalışmadığını belirlemek için Flash'ı (CS3 + AS3) kullanmanın bir yolu var mı?SWF'nin bir "hata ayıklama" oynatıcısında veya modda olup olmadığını belirleme

Flex'in, farklı oluşturma hedefleri (sürüm/hata ayıklama) kurma ve #ifdef stili derleme zamanında kod eklenmesi için CONFIG::debug gibi bir şey kullanabileceğini bildiğinin farkındayım.

System.isDebug() gibi bir şey hayal ediyorum ama bir şey bulamıyorum. Uygulamamda hata ayıklama işlevleri olduğu için ben kesinlikle üretim ortamında kullanılabilir olmak istemiyorum.

+0

Büyük soru:

Ben blog linki şimdiye iner diye burada başvurulan kod, yeniden ediyorum. Bunu bilmek önemlidir, çünkü hata ayıklayıcıda kullanıcı için uyarılar ile birlikte hatalar patlar ve muhtemelen başka farklılıklar da vardır. –

cevap

19

Kontrol dışarı Bu sınıf iki bilgi ilgili (ve farklı) adet sağlar http://blog.another-d-mention.ro/programming/how-to-identify-at-runtime-if-swf-is-in-debug-or-release-mode-build/

bu sınıfı:

  • -debug anahtarı ile inşa SWF (hata ayıklama sembolleri vardır oldu derlenmiş)?
  • Flash oynatıcısı bir hata ayıklayıcıdır (hataları görüntüleme yeteneğine sahiptir, vb.)?

Capabilities.isDebugger yalnızca ikinci soruyu yanıtlıyor - Flash Debug oynatıcısını çalıştıran kullanıcı. Durumunuzda, uygulamanızın bölümlerini bir hata ayıklama oluşturma işleminde açmak için, -debug oluşturma denetimini (ve daha sonra -debug yapılarının üretime teslim edilmesini istemezsiniz). Ancak, bu iki denetimin de çalışma zamanı denetimleri olduğunu unutmayın. Hata ayıklama kodunuzun etrafındaki koşullu derleme (aka CONFIG :: hata ayıklama) kullanmak, muhtemelen olası hata ayıklama kodunun son SWF'de teslim edilmediğinden ve olabildiğince küçük ve güvenli hale getirildiğinden emin olacağından hala iyi bir fikirdir.

package org.adm.runtime 
{ 
    import flash.system.Capabilities; 

    public class ModeCheck 
    { 
    /** 
    * Returns true if the user is running the app on a Debug Flash Player. 
    * Uses the Capabilities class 
    **/ 
    public static function isDebugPlayer() : Boolean 
    { 
     return Capabilities.isDebugger; 
    } 

    /** 
    * Returns true if the swf is built in debug mode 
    **/ 
    public static function isDebugBuild() : Boolean 
    { 
     var stackTrace:String = new Error().getStackTrace(); 
     return (stackTrace && stackTrace.search(/:[0-9]+]$/m) > -1); 
    } 

    /** 
    * Returns true if the swf is built in release mode 
    **/ 
    public static function isReleaseBuild() : Boolean 
    { 
     return !isDebugBuild(); 
    } 
    } 
} 
+0

'new Error(). GetStackTrace()', sürüm oluşturmadaki "null" değerini döndürür ... –

+0

Bir Hata Ayıklama Oynatıcısı olduğunda, yönteminiz "isDebugBuild" her zaman "false" değerini döndürür. Fikrim, oynatıcı bir hata ayıklayıcısı olduğunda, SWF'nin bir hata ayıklama veya yayın oluşturma yapısı olup olmadığını anlamanın bir yolu yoktur. –

+0

@PeterLee Bu bir hata ayıklama oyuncusu olabilir, ancak swf hata ayıklama yapılamaz. Hata ayıklama yapısı yığın izlerinde satır numarası bilgisi içerir. – TheBrain

İlgili konular