Как отладить сбой с помощью мобильного приложения Flex / AIR? - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть flex-приложение, использующее 4.5.1 SDK и AIR 2.7, работающее на планшете Android 3.2.Во время использования я могу заставить его довольно часто падать.Обычно я быстро прокручиваю элемент управления List.Кажется, я не могу найти причину.

Приложение внезапно закроется.Это происходит как в отладочной, так и в выпускной сборках.

В режиме отладки он просто отключается от отладчика и не дает мне никакой полезной информации.

Я в растерянности от того, какотладить это.Какие методы я могу использовать?

Я нашел команду "adb logcat".Соответствующая информация из журнала ниже, к сожалению, это ничего не значит для меня.

I/DEBUG   (   85): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (   85): Build fingerprint: 'asus/US_epad/TF101:3.2/HTJ85B/US_epad-8.6.5.9-20110816:user/release-keys'
I/DEBUG   (   85): pid: 2447, tid: 2447  >>> air.com.projectite.ProjectiteMobile <<<
I/DEBUG   (   85): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 5a00923a
I/DEBUG   (   85):  r0 59fe2008  r1 00628e8c  r2 00025e3a  r3 00628e8c
I/DEBUG   (   85):  r4 006160e8  r5 8126c8d5  r6 bef8fb28  r7 002f8000
I/DEBUG   (   85):  r8 04fe8000  r9 00628e80  10 02ed04fd  fp 81eea9a0
I/DEBUG   (   85):  ip 59fe3400  sp bef8faf8  lr 8126cb7f  pc 8126cb48  cpsr 88000030
I/DEBUG   (   85):  d0  00000000c0800000  d1  cb000004c0800000
I/DEBUG   (   85):  d2  cb000004cb000000  d3  41f00000c0800000
I/DEBUG   (   85):  d4  40f0000000000000  d5  40e0000000000000
I/DEBUG   (   85):  d6  0000000000000000  d7  0000000000000004
I/DEBUG   (   85):  d8  40f14c4000000000  d9  c059206affffff9b
I/DEBUG   (   85):  d10 4263ddb6c2ca0354  d11 bfefeb3780000000
I/DEBUG   (   85):  d12 0000000000000000  d13 0000000000000000
I/DEBUG   (   85):  d14 0000000000000000  d15 0000000000000000
I/DEBUG   (   85):  scr 2000001b
I/DEBUG   (   85): 
I/DEBUG   (   85):          #00  pc 0026cb48  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85):          #01  pc 00194054  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85):          #02  pc 001a2774  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85):          #03  pc 001aa5f8  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85): 
I/DEBUG   (   85): libc base address: aff00000
I/DEBUG   (   85): 
I/DEBUG   (   85): code around pc:
I/DEBUG   (   85): 8126cb28 69e01e42 7ce2ea22 bfa84281 6a601e41 
I/DEBUG   (   85): 8126cb38 71e1ea21 f20cfb00 eb006920 46190c81 
I/DEBUG   (   85): 8126cb48 0002f85c 2200eac0 2320eac0 f282fa3f 
I/DEBUG   (   85): 8126cb58 f393fa3f b005c10c f04fbd30 80da0200 
I/DEBUG   (   85): 8126cb68 805a809a e7f6801a 46204d05 92029103 
I/DEBUG   (   85): 
I/DEBUG   (   85): code around lr:
I/DEBUG   (   85): 8126cb5c b005c10c f04fbd30 80da0200 805a809a 
I/DEBUG   (   85): 8126cb6c e7f6801a 46204d05 92029103 9301447d 
I/DEBUG   (   85): 8126cb7c 9b0147a8 99039a02 bf00e7cd fffffd59 
I/DEBUG   (   85): 8126cb8c 4604b530 b08568c0 d02f2800 42906a20 
I/DEBUG   (   85): 8126cb9c 1e42bfd8 ea2269e0 428872e2 1e41bfd8 
I/DEBUG   (   85): 
I/DEBUG   (   85): stack:
I/DEBUG   (   85):     bef8fab8  812a21e1  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85):     bef8fabc  bef8fb00  
I/DEBUG   (   85):     bef8fac0  bef8fcf8  
I/DEBUG   (   85):     bef8fac4  00000001  
I/DEBUG   (   85):     bef8fac8  00000000  
I/DEBUG   (   85):     bef8facc  812a9c7f  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85):     bef8fad0  5be301d0  
I/DEBUG   (   85):     bef8fad4  00000001  
I/DEBUG   (   85):     bef8fad8  00000000  
I/DEBUG   (   85):     bef8fadc  00642f18  
I/DEBUG   (   85):     bef8fae0  000024b4  
I/DEBUG   (   85):     bef8fae4  aff13f17  /system/lib/libc.so
I/DEBUG   (   85):     bef8fae8  006160e8  
I/DEBUG   (   85):     bef8faec  8126c8d5  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85):     bef8faf0  df002777  
I/DEBUG   (   85):     bef8faf4  e3a070ad  
I/DEBUG   (   85): #00 bef8faf8  00d15114  
I/DEBUG   (   85):     bef8fafc  00628e8c  
I/DEBUG   (   85):     bef8fb00  0000002f  
I/DEBUG   (   85):     bef8fb04  000004fe  
I/DEBUG   (   85):     bef8fb08  00628e80  
I/DEBUG   (   85):     bef8fb0c  00616178  
I/DEBUG   (   85):     bef8fb10  00628e8c  
I/DEBUG   (   85):     bef8fb14  81194058  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85): #01 bef8fb18  00000000  
I/DEBUG   (   85):     bef8fb1c  812a5f9f  /data/data/com.adobe.air/lib/libCore.so
I/DEBUG   (   85):     bef8fb20  0061bc68  
I/DEBUG   (   85):     bef8fb24  81ea8ee0  
I/DEBUG   (   85):     bef8fb28  04fe0000  
I/DEBUG   (   85):     bef8fb2c  002f0000  
I/DEBUG   (   85):     bef8fb30  bef8ff3c  
I/DEBUG   (   85):     bef8fb34  00628e80  
I/DEBUG   (   85):     bef8fb38  ffffffa0  
I/DEBUG   (   85):     bef8fb3c  00000003  
I/DEBUG   (   85):     bef8fb40  00000000  
I/DEBUG   (   85):     bef8fb44  00000000  
I/DEBUG   (   85):     bef8fb48  0019fe40  
I/DEBUG   (   85):     bef8fb4c  02ed04fd  
I/DEBUG   (   85):     bef8fb50  81eea9a0  
I/DEBUG   (   85):     bef8fb54  811a2778  /data/data/com.adobe.air/lib/libCore.so
I/BootReceiver(  136): Copying /data/tombstones/tombstone_01 to DropBox (SYSTEM_TOMBSTONE)
I/ActivityManager(  136): Process air.com.projectite.ProjectiteMobile (pid 2447) has died.
I/WindowManager(  136): WIN DEATH: Window{41c90270 air.com.projectite.ProjectiteMobile/air.com.projectite.ProjectiteMobile.AppEntry paused=false}

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Существует несколько подходов, которые вы можете попробовать:

Начните с попытки профилировать ваше приложение с помощью Flash Builder Profiler и искать утечки памяти.Есть ли там объекты, которые не собирают мусор?Вы можете найти очевидное «быстрое решение».

Во-вторых, вы можете попробовать удалить функциональность / экраны из вашего приложения 1 x 1 и посмотреть, влияют ли они на сбой / производительность.Если вы удалите что-то, и это решит проблему, то вы можете отточить этот код, чтобы попытаться оптимизировать его или выяснить, почему оно вызывает проблему.

Я перестраивал приложения с нуля, медленно добавляя что-то, пока не узнал, что ломало вещи.Это утомительно;но эффективны.

Есть много «очевидных» вещей, на которые вы можете обратить внимание, таких как замена MXML на ActionScript и удаление использования связывания, что часто повышает производительность.

2 голосов
/ 12 сентября 2011

Я не знаю о разработке Android, но я наткнулся на этот драгоценный камень на прошлой неделе: http://jpauclair.net/mm-cfg-secrets/

Эта часть, которая может вас заинтересовать, вот эта. Это может помочь вам найти место сбоя, по крайней мере.

AS3Trace = 1 | 0

Этот также очень полезен для отладки. Он отслеживает каждый отдельный вызов. любой функции, которая вызывается в SWF во время выполнения! Это как расширение StackTrace до полного времени выполнения программного обеспечения.

Если вам сложно найти сбой, вы можете включить его, и вы увидите ВСЕ последние выполненные функции привели к сбою.

Вы даже можете увидеть обратные вызовы по таймеру и событиям!

...