[antlr-interest] Debugging problem

Ruth Karl ruth.karl at gmx.de
Sun May 27 08:26:28 PDT 2007


Gavin Lambert schrieb:
> At 21:44 27/05/2007, Ruth Karl wrote:
> >I like ANTLWorks a lot, but I cannot figure out how to tell it how
> >to debug.
> >Whenever I try to, it obviously tries to connect (to port 49157
> >which seems to be the default setting in preferences - but who
> >... is listening there???) and then (not very surprinsingly)
> >gets a time-out. I do not see, how I could configure the debugger
> >or how debugging is supposed to work. My target language is C#...
> >but I can't get it to work with Java either.
>
> There's two separate debugging modes.  The first ("Debug"), only works 
> with Java AFAIK but automatically compiles and runs the parser.  The 
> second ("Debug Remote"), I think will work with any language since 
> it's connecting to an external server.  To use the second option you 
> have to build a debug parser (extra compiler option to ANTLR) and 
> start it up, and only *then* start debugging in ANTLRworks.
>
> Also note that ANTLRworks only seems to be able to debug parsers -- it 
> won't help with debugging the lexer (except indirectly).
>
Thanks a lot for your reply: but sorry, what is 'AFAIK'?

For the first ("Debug") option with Java as default target language, the 
following happens:

error(10):  internal error: 
org.antlr.runtime.debug.DebugParser.reportError(DebugParser.java:88): 
java.net.BindException: Address already in use: JVM_Bind

Exception in thread "main" java.lang.NullPointerException
    at 
org.antlr.runtime.debug.DebugEventSocketProxy.transmit(DebugEventSocketProxy.java:108)
    at 
org.antlr.runtime.debug.DebugEventSocketProxy.exitRule(DebugEventSocketProxy.java:122)
    at testParser.document(testParser.java:82)
    at __Test__.main(__Test__.java:16)

which refers to line 82 in testParser:
                                    dbg.exitRule("document");
in the finally-block of its document()-method.

What could be the reason? How can I avoid it and use the debugger?

For the second ("Debug remote") option: As far as I can see, I have to 
modify the parser then, give it a new constructor, so I can invoke it 
without a reference to an inputStream. The same for the lexer. And how 
do I connect it to (which?) DebugEventListener???

Sorry for asking so many probably dumb questions, but I am really 
confused, especially because the description insinuates that "Debug" 
'automatically compiles and runs the parser'...

Ruth


More information about the antlr-interest mailing list