llmhyy / microbat

A feedback-based debugger for interactively recommending suspicious step in buggy program execution.
55 stars 16 forks source link

[Instrumentation] Incorrect ClassCananicalName #94

Closed llmhyy closed 6 years ago

llmhyy commented 6 years ago

hi @lylytran

Would you please check the closure-7? The problem is really weird. The class canonical name of 532182th step in the buggy trace should be ChainableReverseAbstractInterpreter$RestrictByTypeOfResultVisitor, however, the running result shows ChainableReverseAbstractInterpreter (i.e., RestrictByTypeOfResultVisitor is missing). But that of the corresponding step in the correct trace is correct, i.e., ChainableReverseAbstractInterpreter$RestrictByTypeOfResultVisitor. Therefore, I try to figure out why the class canonical name is incorrect.

The results show that the class canonical name is incorrect just after when we read trace from the trace file (I set a break point at line 138 of InstrumentationExecutor, it shows that the class canonical name is ChainableReverseAbstractInterpreter). However, when I use remote debugging on the agent, finding that the canonical class name is correct (i.e., ChainableReverseAbstractInterpreter$RestrictByTypeOfResultVisitor) just before writing into file!

I am not sure how the RestrictByTypeOfResultVisitor is truncated during IO. Note that, the correct trace has no such problem. The incorrect class name makes all the following trace match incorrect. Please kindly help.

llmhyy commented 6 years ago

well done