Я не думаю, что это действительно полный ответ, но некоторые указатели, которые могут обеспечить что-то работоспособное:
(1) С точки зрения просмотра и непосредственной работы с байт-кодом может пригодиться старый BCEL Class Construction Kit (это единственный графический редактор GUI для байт-кода, о котором я знаю).
(2) С точки зрения отладки и пошагового выполнения байт-кода, этот плагин Eclipse , который интегрируется с отладчиком Eclipse, может удовлетворить ваши потребности.
Мне неизвестны какие-либо утилиты, которые бы объединяли эти функции и позволяли вам манипулировать байт-кодом во время выполнения кода (по крайней мере, так же, как в OllyDbg и т. Д.). Однако API отладчика Java должен поддерживать манипулирование кодом во время выполнения (хотя, учитывая природу HotSpot и JIT в целом, я не знаю, можно ли будет просто переписать инструкцию до его вызова --- выполняемый в настоящее время код операции байт-кода действительно является абстракцией для того, как интерпретатор выбирает реализацию операции, в отличие от нативного кода, где разобранный код операции - это, фактически, инструкция, отправляемая в ЦП). В качестве альтернативы вы можете обратиться к Java Instrumentation API , который предоставляет способ переопределения байт-кода во время выполнения. И, конечно же, любая из различных библиотек манипулирования байт-кодом с открытым исходным кодом может помочь или вдохновить.
И, конечно, всегда есть возможность обойти всю инфраструктуру JVM и просто подключить отладчик к процессу JVM. В этом вопросе есть обсуждение этого , а на ссылка на этот вопрос .
Суть, однако, в том, что то, что вы пытаетесь достичь, хотя и является обычным явлением в мире нативного кода, не так уж часто встречается в практике в мире Java (одна из причин использования Ява - абстракция от всех кровавых деталей). Это и относительно тривиальная природа декомпиляции байт-кода (по сравнению, скажем, с C ++) привели к ситуации, когда требования такого типа недостаточны, как и этот тип инструментов.