谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

なんか問題が発生し始めました。

BTraceの実践的な使い方は、作者のblogで紹介されています。
BTrace in the real world -- A. Sundararajan's Weblog


これを動かそうとした所、コンパイルエラーが発生して正常動作しませんでした。
以下のような修正を行なったところ、コンパイルエラーがなくなりました。

87行目
executingStatement = get(preparedStatementDescriptions, currentStatement);
↓
executingStatement = (String)get(preparedStatementDescriptions, currentStatement);

104行目
AtomicLong ai = get(statementDurations, executingStatement);
↓
AtomicLong ai = (AtomicLong)get(statementDurations, executingStatement);

いずれもクラスのキャストの問題ですね。


さて、実際に動かしてみると、今度はClassFormatErrorが発生しました。

java.lang.ClassFormatError: Illegal class name "Ljava/lang/Object;" in class file org/hsqldb/jdbc/jdbcConnection

Exception in thread "Thread-9" java.lang.ClassFormatError
at sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
at sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:124)
at com.sun.btrace.agent.Main.handleNewClient(Main.java:278)
at com.sun.btrace.agent.Main.startServer(Main.java:245)
at com.sun.btrace.agent.Main.access$000(Main.java:53)
at com.sun.btrace.agent.Main$1.run(Main.java:127)
at java.lang.Thread.run(Thread.java:619)

さて、面白くなってきましたね!