うーわ。JDI第2回
JDI maniacs第2回。(そんな名前じゃなかった気がする)
ひっさびさにバグにはまる。
ってか、仕様の詳細が見つけられず、四苦八苦してたわけですが。
ばっどのうはう溜めたからメモしておこう。
JDI 5.0で動作確認。
その1
クラスのロードについて。
クラスのロードは外部からVirtualMachine.classesByNameを呼んだくらいじゃしてくれない。まぁ、当然だけど。
起動してるVMの、中のClassLoaderあたりを起動すると読み込める。
けど、実はリンクとかの準備がされてないらしく、ClassTypeのメソッドにアクセスすると、Exceptionで落ちる。ちゃんとドキュメントは読みましょう。
その2
BreakpointEventをトラップした後、その中でinvokeMethodやnewInstanceを呼ぶ場合、MethodEntryRequestを発行しているとデッドロックを起こすらしい。固まった。APIに書いといてくれよ・・・。これを見つけるのに2日かかった。。。マジ萎える・・・。
その3
ライブラリによってはデバッグ情報が消えてるものもあるらしい。
そのあたり、どうするかは、結構問題だなぁ。。。
今回の研究とはずれるので、アドホックに解決するけど。