先日、JVMをネイティブコードのレベルでデバッグしないといけなくなったので、このブログはそのメモです。例によって、僕はJVMチームの一員じゃありません。もし、よりよい方法をご存知の方は教えて下さい。 さて、これをやるはめになったのは、MavenをHudsonからある特定の方法で起動するとMavenがハングする、というバグが懸案になっていたからです。デバッグを長くやっていると、誰しもある種の勘というかそういうものが身についてきて、これは性質の悪い、下位レイヤからくるバグだというのが分かる時がありますが、これはそういうバグでした(本当はそんなアナログなものじゃなくて、脳内で症状に合致する仮説を組み立てようとした結果、妥当な仮説が存在しないというか、もっと検索的な感じなのですが)。 デバッガサポートをつけてJVMを起動するとバグは再現しないし、jconsoleをアタッチするとその途端に生き返り、