takashi-ishio / selogger

(Near-)omniscient debugging/tracing/logging tool for Java
Other
35 stars 8 forks source link

Selogger.reader does not work for `omnibinary` log #27

Closed yebityon closed 2 years ago

yebityon commented 2 years ago

Description

I realized that selogger. reader does work for .slg file. It seems there are two problems with this issue, describe details below.

selogger. reader can not handle the header.

Since v0.5.0, selogger produce header informatin for CSV in the nearomni mode, but also it seems selogger produces header imformation in omnibinary and omni mode. Hence, it throws an exception when DataIdMap function try to parse header information.

StackTrace:

Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Scanner.java:864)
        at java.util.Scanner.next(Scanner.java:1485)
        at java.util.Scanner.nextInt(Scanner.java:2117)
        at java.util.Scanner.nextInt(Scanner.java:2076)
        at selogger.weaver.ClassInfo.parse(ClassInfo.java:165)
        at selogger.reader.DataIdMap.loadClassEntryFile(DataIdMap.java:76)
        at selogger.reader.DataIdMap.<init>(DataIdMap.java:33)
        at selogger.reader.LogPrinter.main(LogPrinter.java:54)`

selogger.reader throw exception when try to parse EventType which has single Attributes.

Inselogger.weaver.DataInfo.parse() , it tries to split key values by separator, but some EvenType has not a separator. For Instance , "0,0,0,4,-1,RESERVED,V,"null""

StackTrace:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at selogger.weaver.DataInfo.parse(DataInfo.java:196)
        at selogger.reader.DataIdMap.loadDataIdEntryFile(DataIdMap.java:111)
        at selogger.reader.DataIdMap.<init>(DataIdMap.java:35)
        at selogger.reader.LogPrinter.main(LogPrinter.java:54)

Environment

selogger version: 62063edea0e16d1895f3fc768307d2065cb0f05c Java env

openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)

To reproduce this issue, I created the branch on my repository. https://github.com/yebityon/POLDAM/tree/feat/selogger/omni_binary The sample Programs are located on Data/java8/src/omni_binary, I used selogger with Main.java and customClass/myMath.java. selogger output directory is Data/java8/src/omni_binary/origin/selogger_out.

The procedure to get selogger output directory is recorded in build.sh Note: you need to git clone selogger on Data/java8/selogger to run build.sh.

takashi-ishio commented 2 years ago

@yebityon Thank you for your detailed bug report. I have confirmed that the fixed version correctly works with the files for reproduction.