> I am conceiving of it as a standalone utility.

I'm interested in the reasoning there.  No strong opinions, I can see some
advantages either way, but an IDE integration does seem to have a head
start in several areas related to debugging.



On Mon, Feb 15, 2021 at 1:27 PM Sloane, Brandon <bslo...@owlcyberdefense.com>
wrote:

> We are at the very early stages. I am conceiving of it as a standalone
> utility.
>
>
>
> Brandon Sloane | Engineer
>
> bslo...@owlcyberdefense.com
>
> Connect with us!
>
> <https://www.linkedin.com/company/owlcyberdefense/>
> <https://twitter.com/owlcyberdefense>
>
> <https://owlcyberdefense.com/resources/events/>
>
>
>
> The information contained in this transmission is for the personal and
> confidential use of the individual or entity to which it is addressed. If
> the reader is not the intended recipient, you are hereby notified that any
> review, dissemination, or copying of this communication is strictly
> prohibited. If you have received this transmission in error, please notify
> the sender immediately
>
> ------------------------------
> *From:* John Wass <jwa...@gmail.com>
> *Sent:* Monday, February 15, 2021 7:39 AM
> *To:* dev@daffodil.apache.org <dev@daffodil.apache.org>
> *Subject:* Re: Possible road map for GUI debugger
>
> Is the gui envisioned to be an ide plugin or a standalone application (ie
> swing, fx, ...)?
>
>
>
> On Sun, Jan 24, 2021 at 2:08 PM Sloane, Brandon <
> bslo...@owlcyberdefense.com>
> wrote:
>
> > Following up on the recent discussion about the Daffodil debugger, I
> would
> > like to propose a roadmap for creating graphical debugger.
> > Organizationally, the GUI debugger is a separate application (maintained
> > in the normal Daffodil repository) that may include any of the current
> > Daffodil libraries as a dependency.
> >
> > Phases 1 and 2 focus on developing an enhanced trace functionality; where
> > Daffodil outputs a machine readable trace of the parse/unparse process.
> The
> > GUI then allows a user to view this trace offline.
> >
> > Phase 3 adds support for interactive debugging, by allowing the
> > Daffodil-cli and Daffodil-gui-debugger to act in a client/server
> > relationship
> >
> > Phase 4 focuses on backend debugger enhancements.
> >
> > In more detail:
> >
> > Phase 1:
> >
> >    - Add a --machine-trace flag to Daffodil CLI, that is analogous to the
> >    current --trace option. Output is a stream of XML parse-state nodes,
> each
> >    one describing the current state of the parse, including:
> >       - Current infoset
> >       - Current bit position
> >       - Current parser
> >       - A UID of the current state
> >       - A UID of the parent state (in event of backtracking, multiple
> >       states will have the same parent).
> >    - Machine-trace output stream also include input-data nodes, that
> >    include:
> >       - A region of (byte aligned) input data (hex encoded?)
> >       - The byte position of the start of the region
> >       - The relative location of the input data nodes is undefined, but
> >       given the complete trace, it should be possible to reconstruct the
> original
> >       dataset by stitching together the data in the nodes. The goal here
> is that
> >       we can just output data as Daffodil reads it in.
> >    - --machine-trace take an optional argument of a file path. If
> >    provided, its output will be directed to a file at said location
> (otherwise
> >    stderr)
> >    - Create a GUI program that can ingest the machine trace and display
> >    it in a 4-pane view:
> >       - Pane 1 - trace navigator
> >          - Represents the entire parse in a tree format. Each parse state
> >          corresponds to a node on the tree
> >          - The user can select a node on the tree to load it into the
> >          other panes
> >       - Pane 2 - Infoset viewer
> >          - Shows the complete infoset corresponding to the node selected
> >          in pane 1.
> >          - Indicates the "current" position of the parser within the
> >          infoset
> >          - Highlights changes in the infoset relative to the parent node.
> >       - Pane 3 - binary viewer
> >          - Shows a complete hex-dump of the input data, indicating
> >          current location within the parse
> >       - Pane 3 -- parser view
> >          - Shows the current parser. Probably will be a dumping ground
> >          for additional information that does not warrant the addition
> of a new pane.
> >
> >
> > Phase 2:
> >
> >    - Support showing suspensions on unparse
> >    - Display additional data about the parse/unparse state:
> >       - Delimeter stack
> >       - Variables
> >    - Support additional formats for displaying input data
> >       - Text (of selectable encoding)
> >       - Binary (not hex; actual 1s and 0s)
> >    - Support generating traces through the API as well.
> >
> > Phase 2.5:
> >
> > Gather user feedback and iterate on the trace viewer functionality
> >
> > Phase 3:
> >
> >    - Define protocol for the debugger to talk with the CLI.
> >    - Debugger can load schema, and input data.
> >    - Debugger can step through the parse/unparse
> >    - Viewer built in phases 1 and 2 continually updates as the parse
> >    proceeds
> >    - User can send CLI debugger commands and get the textual response;
> >    but only for the current parse/unparse state.
> >    - User can set breakpoints (possibly using textual commands). Debugger
> >    supports continue until breakpoint
> >
> > Phase 3.5:
> >
> >
> >    - Not debugger related, but as long as the Daffodil CLI can operate as
> >    a server, support server mode operations for non-debug use cases.
> >
> >
> > Phase 4:
> >
> >    - Support time travel debugging, with an interface in both the CLI and
> >    GUI debuggers
> >    - Support associating a trace with schema source, and allowing a "go
> >    to source" functionality where the user can navigate directly to the
> >    location in source corresponding to the current parser
> >    - Support dynamically editing/reloading schema and input data
> >
> > Thoughts?
> > Brandon Sloane | Engineer
> >
> > bslo...@owlcyberdefense.com
> >
> > Connect with us!
> >
> > <https://www.linkedin.com/company/owlcyberdefense/>
> > <https://twitter.com/owlcyberdefense>
> >
> > <https://owlcyberdefense.com/resources/events/>
> >
> >
> >
> > The information contained in this transmission is for the personal and
> > confidential use of the individual or entity to which it is addressed. If
> > the reader is not the intended recipient, you are hereby notified that
> any
> > review, dissemination, or copying of this communication is strictly
> > prohibited. If you have received this transmission in error, please
> notify
> > the sender immediately
> >
> >
>

Reply via email to