chromy / Deeva

A simple, non-magical Java debugger.
1 stars 0 forks source link

DEATH when String declared but not assigned #4

Open bohomi opened 10 years ago

bohomi commented 10 years ago

Discovered the bug when running functions.Functions and setting a breakpoint at line 30 (or below i think).

TRACE: Starting program... finding launching connector Final main string: examples.functions.Functions beginning launch class com.sun.tools.jdi.EventSetImpl$VMStartEventImpl Attempting to set saved breakpoint. 2 class com.sun.tools.jdi.EventSetImpl$ClassPrepareEventImpl Attempting to set saved breakpoint. 3 class com.sun.tools.jdi.EventSetImpl$VMDeathEventImpl DEATH u'ababababab' u'\n5\n' class com.sun.tools.jdi.EventSetImpl$VMDisconnectEventImpl None

chromy commented 10 years ago

Reproduced, I think it might a dodgy case in the delayed breakpoint setting. I'm having a look.

chromy commented 10 years ago

Ah... I see the issue. jdi doesn't (directly) support setting breakpoints on declarations (after all no actual code exists there after compilation) but we don't know which line numbers are valid until after we've loaded the class so currently Deeva remembers the breakpoint and tries to set it when the class is loaded. Since the breakpoint couldn't be set the control flow passes straight though ignoring the breakpoint.

I agree we should do something cleverer, I'm not sure what though...

We really need a better scheme for telling the client to update breakpoints