うーわ。JDI第2回

JDI maniacs第2回。(そんな名前じゃなかった気がする)

ひっさびさにバグにはまる。
ってか、仕様の詳細が見つけられず、四苦八苦してたわけですが。

ばっどのうはう溜めたからメモしておこう。
JDI 5.0で動作確認。


その1

クラスのロードについて。
クラスのロードは外部からVirtualMachine.classesByNameを呼んだくらいじゃしてくれない。まぁ、当然だけど。
起動してるVMの、中のClassLoaderあたりを起動すると読み込める。
けど、実はリンクとかの準備がされてないらしく、ClassTypeのメソッドにアクセスすると、Exceptionで落ちる。ちゃんとドキュメントは読みましょう。


その2

BreakpointEventをトラップした後、その中でinvokeMethodやnewInstanceを呼ぶ場合、MethodEntryRequestを発行しているとデッドロックを起こすらしい。固まった。APIに書いといてくれよ・・・。これを見つけるのに2日かかった。。。マジ萎える・・・。


その3

ライブラリによってはデバッグ情報が消えてるものもあるらしい。
そのあたり、どうするかは、結構問題だなぁ。。。
今回の研究とはずれるので、アドホックに解決するけど。