Yes, I'd gladly try it. We can switch to personal emails in order not to
spam the list.
On 29.04.2014 18:34, Frédéric THOMAS wrote:
Hi Alexander,
I downloaded the files you indicated me + some missing files (UI, ShineMP3,
metallica.wav), created an IntelliJ project, build and run successfully the
application with Apache Flex SDK 4.12 / AIR 4.0 + my version of FDB and was
unable to reproduce both of the issues, it worked as expected, so, that's a
good news.
Also, not on this test app but on another one [1], I've been able to set a BP
on the worker using IntelliJ once the worker has been loaded but the variables
was not readable and futur stops to the BP didn't work, IJ shows up the
SystemManager class instead.
If you are interested to test my version, just tell me and I will send it to
you.
Unfortunately, I haven't been able to work on it yesterday but will continue
tonight.
Frédéric THOMAS
[1] https://github.com/doublefx/downloadFileWorker
Date: Tue, 29 Apr 2014 15:25:23 +0400
From: alexander.doros...@jetbrains.com
To: dev@flex.apache.org
Subject: Re: [FDB] Integration
Hi Frédéric,
that's great that you are ready to put the effort into fdb with workers
support!
I have to say that IntelliJ IDEA still doesn't support debugging apps
with workers. I spent some time on it but faced some bugs in fdb that
were not that easy to workaround. That's not an excuse for me and I hope
to finally support workers debug in the next version. Luckily fdb is not
a black box for me any more.
Below are some of the bugs that I faced. I played with this project:
http://gotoandlearn.com/play.php?id=169. 'Download files' link contains
already compiled MP3Worker.swf which is the main app.
1. When the worker is loaded it is impossible to switch to main thread
using 'worker 0' command. Fdb says that active worker has changed but
asking 'info workers' again says that actually it hasn't. See listing [1].
2. More important bug for the IDE integration is inability to set
breakpoint without knowing file id. Files that belong to different
workers may have the same id. When I ask to set a breakpoint in a file
with given name but current active worker doesn't have file with this
name then fdb sets the breakpoint inside completely different file that
does belong to the current worker and has the same id as the file where
I asked to set breakpoint. See listing [2].
Alexander
[1]
C:\flex\air_sdk_13.0_asc_2.0\bin>fdb
C:\flex\air_sdk_13.0_asc_2.0\bin>java -Dsun.io.useCanonCaches=false -Xms32m -Xmx512m
-Dapplication.home="C:\flex\air_sdk_13.0_asc_2.0\bin\.." -jar
"C:\flex\air_sdk_13.0_asc_2.0\bin\../lib/legacy/fdb.jar"
Adobe fdb (Flash Player Debugger) [build development]
Copyright (c) 2004-2007 Adobe, Inc. All rights reserved.
(fdb) run
Waiting for Player to connect
Player connected; session starting.
Set breakpoints and then type 'continue' to resume the session.
[SWF] C:\work\flex_projects\MP3Worker\bin-debug\MP3Worker.swf - 175?169 bytes
after decompression
(fdb) c
[WorkerCreate] 1
Additional ActionScript code has been loaded from a SWF or a frame.
To see all currently loaded files, type 'info files'.
Active worker has changed to worker 1
Set additional breakpoints as desired, and then type 'continue'.
(fdb) info workers
Main Thread 0 - Running
Worker 1 - Suspended (Active)
[SWF] C:\work\flex_projects\MP3Worker\bin-debug\MP3Worker.swf - 493?264 bytes
after decompression
Set additional breakpoints as desired, and then type 'continue'.
(fdb) worker 0
*Active worker has changed to worker Main Thread*
Set additional breakpoints as desired, and then type 'continue'.
(fdb) info workers
*Main Thread 0 - Running*
*Worker 1 - Suspended (Active)**
*Set additional breakpoints as desired, and then type 'continue'.
(fdb)
[2]
...
(fdb) info workers
Main Thread 0 - Suspended (Active)
Worker 1 - Suspended
(fdb) show files
1 /Users/leebrimelow/Documents/Adobe Flash Builder
4.6/MP3Worker/src/MP3Worker.as, MP3Worker.as (Main Thread)
2 /Users/leebrimelow/Documents/Adobe Flash Builder
4.6/MP3Worker/src/Workers.as, Workers.as (Main Thread)
1 /Users/leebrimelow/Documents/Adobe Flash Builder
4.6/MP3Worker/src/BackWorker.as, BackWorker.as (Worker 1)
2 /Users/kikko/work/tests/shineMP3_alchemy/src/fr/kikko/lab/ShineMP3Encoder.as,
ShineMP3Encoder.as (Worker 1)
*(fdb) break BackWorker.as:26**
**Breakpoint 2: file MP3Worker.as, line 26**
*(fdb)
On 27.04.2014 4:01, Frédéric THOMAS wrote:
Hi,
To resume a bit what I did and discover today:
1- I merged the donated code to the the current FDB, keeping the existing fixes
and the current ExpressionEvaluator (I guess It is possible to use the new
Falcon based implementation modifying the ANT script which builds it, in order
to link the Falcon sources).
2- The new commands are "worker <workerID>" used to select a parlicular worker by its ID
and "info workers", this is an example of what gives a break inside a worker and what displays
the 2 commands :
(fdb) info workers
!mainThread! 0 - !workerRunning!
!inWorker! {worker=1} - !workerSuspended! !workerSelected!
(fdb) worker 0
!workerChanged! !mainThread!
(fdb) info workers
!mainThread! 0 - !workerRunning! !workerSelected!
!inWorker! {worker=1} - !workerSuspended!
(fdb) worker 1
!workerChanged! 1
(fdb) info workers
!mainThread! 0 - !workerRunning!
!inWorker! {worker=1} - !workerSuspended! !workerSelected!
Note for IDE integration:
1- At the moment, watch, displays and breakpoints are set for 1 particular
worker, it means, they need to be defined again when a worker starts.
2- "info breakpoints" does well display the breakpoints for the same line and
on different worker of the same class but without the relative worker ID (I guess it
could be easily fixed)
I'll be back on it on Monday.
Frédéric THOMAS