Bummer.

Something like Dart seems pretty close to Royale as far as mapping goes.

I found this, which seems to indicate there’s similar issues there:

https://stackoverflow.com/questions/54933565/debugging-dart-in-visual-studio-code#54940651

Friendly Call Frames sounds promising. Fingers crossed on that.

Thanks so much for working on this!

Harbs

> On Sep 7, 2024, at 12:22 AM, Josh Tynjala <joshtynj...@bowlerhat.dev> wrote:
> 
> So I've kind of run into a brick wall with my attempts to get our source
> maps to make JS debuggers display original AS3 field/property names instead
> of the modified JS names. There doesn't seem to be any real documentation
> about exactly how web browser devtools (or other debuggers, like VSCode)
> use the name mappings from source maps. Other parts of source maps are
> better documented than name mappings, if still a little sparse. I was able
> to get some local variables renamed in my experiments, but never members of
> classes. I'm kind of starting to suspect that browsers/debuggers ignore the
> name mappings for anything more complex than locals.
> 
> That being said, it's possible that the structure of our generated JS is a
> little wonky due to the use of Closure library for classes/inheritance. I
> may experiment a bit more with hand-written code to see if I can do more.
> It's possible that I can tweak our generated JS to conform more closely to
> something that ends up working better with name mappings.
> 
> The one thing that I successfully implemented was a feature that is
> Chrome-only, called "Friendly Call Frames":
> 
> https://developer.chrome.com/blog/devtools-modern-web-debugging#friendly_call_frames
> 
> In short, when using Chrome's devtools debugger, when stopped at a
> breakpoint, you can use specifically-positioned name mappings to modify the
> call stack view to show the original AS3 names.
> 
> royale-compiler commit here:
> 
> https://github.com/apache/royale-compiler/commit/0ea4001e55ebe1930de4c52b1669e7d96f13b112
> 
> Unfortunately, VSCode's debugger does not support Friendly Call Frames, and
> I don't think other browsers do either (except maybe ones that are Chrome
> forks). However, I opened a feature request for VSCode's debugger, and the
> developer seemed open to supporting it.
> 
> https://github.com/microsoft/vscode-js-debug/issues/2054
> 
> --
> Josh Tynjala
> Bowler Hat LLC <https://bowlerhat.dev>
> 
> 
> On Mon, Jul 22, 2024 at 12:24 PM Harbs <harbs.li...@gmail.com> wrote:
> 
>>> I can look into adding name mapping to our debug build source maps.
>> 
>> That would be amazing!
>> 
>>> On Jul 22, 2024, at 6:17 PM, Josh Tynjala <joshtynj...@bowlerhat.dev>
>> wrote:
>>> 
>>> As I recall, the main thing that I focused on when implementing source
>> maps
>>> was ensuring that breakpoints worked properly. It is possible that the
>>> Royale compiler renames some things, and we don't map the original AS3
>>> names to the generated JS names yet. (Generally, we try to keep the same
>>> variable names in JS, but I recall that there are some special cases
>> where
>>> we rename). That's for debug builds. However, for release builds, source
>>> maps are generated by Closure Compiler. I don't think that we have a lot
>> of
>>> control over how Closure Compiler generates source maps (nor could we
>> take
>>> over for it, since we wouldn't know the new names it generates for
>>> variables and things).
>>> 
>>> I can look into adding name mapping to our debug build source maps.
>>> 
>>> --
>>> Josh Tynjala
>>> Bowler Hat LLC <https://bowlerhat.dev>
>>> 
>>> 
>>> On Sun, Jul 21, 2024 at 6:24 AM Gabe Harbs <harbs.li...@gmail.com>
>> wrote:
>>> 
>>>> I’ve never really tried debugging with source-maps enabled. I figured
>> I’d
>>>> give it a try and while cool, it doesn’t feel so useful because
>> identifiers
>>>> are not mapped to qualified names.
>>>> 
>>>> That includes qualified names of classes and functions and even simple
>>>> things like instance variables not being mapped to “this”.
>>>> 
>>>> Is there any way around this limitation? What do other frameworks do?
>>>> 
>>>> Harbs
>> 
>> 

Reply via email to