Maximally minimal stack trace standardization

John Lenz concavelenz at gmail.com
Sun Sep 28 17:02:28 PDT 2014


Of course a standard string format can be machine readable (we maintain
stack trace parsers for existing browsers) but it is inconvenient compared
to simple JSON or whatever.
On Sep 28, 2014 8:02 AM, "Marius Gundersen" <gundersen at gmail.com> wrote:

> It would be helpful if the stack trace was machine readable, not just
> human readable. As Erik said
>
> [...] we might ass well stop using a string to represent this structured
>> data.
>>
>
> The stacktrace should probably be an array of objects with the properties
> `filename`, `function`, `line` and `column`. It would then be simple to
> format this stacktrace as a string and make it look exactly like it does in
> browsers today. With a machine readable stack trace it would be easier to
> build editor sandboxes (jsbin, codepen.io, etc) where errors inside the
> sandbox could be caught by the editor and shown to the user.
>
> Another feature of the stacktrace as an array is that a library could
> manipulate the stack trace after it has been thrown, to hide the internals
> of the library. This is similar to the black box feature in the Firefox
> devtools. For example, a divide function which takes two integers could
> throw an error when the second parameter is 0 (can't divide by zero). This
> would result in the library internals ending up in the stack trace:
>
> ```js
> function calculate(x, y){
>   return myIntegerMathLibrary.divide(2, x)*y;
> }
>
> calculate(0, 5)
> /*
> Exception: Second parameter is '0'; can't divide by zero
> divide at myIntegerMathLibrary/divide.js:15:15 <= this is library code,it's
> not helpful to the developer
> calculate at myApplication:2:3 <= this tells the developer where the problem
> is in their code
> @myApplication:4:1
> */
> ```
>
> If the library was allowed to manipulate the stack of the Error object
> before throwing it, it could remove the top n lines that are internal to
> it, which would help the developer locate the issue in their code.
>
> Since all modern browsers implement a non-standard stack trace it is
> possible to find out what file you are in and what line you are on by
> throwing and catching an exception and analyzing the stack string. If stack
> traces are added to the standard, then maybe a reflection API that can tell
> what file and line the code is on should be added as well. The module meta
> object will most likely get a filename property, but line number/character
> number is not yet available.
>
> Marius Gundersen
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140928/74b12e57/attachment.html>


More information about the es-discuss mailing list