Home | Eclipse plugins -> Bytecode Outline
+Andrey | About

Eclipse ready

Bytecode Outline plugin for Eclipse

Bytecode Outline plugin shows disassembled bytecode of current java editor or class file, allows bytecode/ASMifier code compare for java/class files and shows ASMifier code for current bytecode. It also allows to disassemble and debug classes without attached source code on any operating system where Eclipse is running.

Here you can see outline examples and debugging examples

This programm is free, see copyright.

Why Bytecode Outline

Have you already asked yourselves what the compiler does with your Java code?
Here is the answer ;)

The main reason for this plugin was my study how Java generates bytecode and my interest in ASM framework. ASM is a great, fast and small bytecode manipulation framework, licensed under the BSD License.

Bytecode Outline is free, see copyright.

ASM is also free and parts of them are included to Bytecode Outline plugin distribution. Please visit http://asm.objectweb.org/index.html to obtain latest information about ASM.

Editor's integration

Bytecode Outline currently supports only Eclipse default Java editor.

In order to use Bytecode Outline as default *.class file editor, it should be set as "default" under "Window->Preferences->General->Editors->File Associations->*.class"

debugging examples

Installation

Please use Eclipse update manager to install this plugin.

Eclipse 3.3 - 3.4:

Go to "Help -> Software Updates -> Find and Install... -> Search for new features to install -> Next -> New Remote Site..."

Eclipse 3.5:

Go to "Help -> Install new Software... -> Work with:"

and use the http://andrei.gmxhome.de/eclipse/ as url.

Manual download

Here

Usage

1) Window -> Show View -> Other -> Java -> Bytecode

to see bytecode of current Java editor/ Class file view. The automatic build for projects should be enabled in order to see generated class files.

If "Link with editor" is on, then any selection in Java editor will be followed with selection of appropriated bytecode label, and vice - versa.

Note: this bi-directional selection could only works, if your bytecode contains source lines/local variables information. Check your compiler setings, if you are not sure that your compiler generates debug information.

If "show raw bytecode" is off, than local variable names will be shown instead of indexes, full qualified names replaced with simply class names, and primitive type abbreviations decoded to readable names.

If "show current element only" is on, then only bytecode of current field/method node will be shown (if cursor is placed inside field/method name or body).

2.1) Select two *.class/*.java files -> right click -> Compare with -> Each Other Bytecode

2.2) Select one *.class/*.java file -> right click -> Compare with -> Another Class Bytecode

to compare bytecode of selected class files. Compare works also for *.class files included in any referenced *.jar library.

"Toggle ASMifier mode on/off" button on both Bytecode Outline and Compare View shows ASMifier java code, that generates selected bytecode. More information about how to use ASMifier you can find here.

Note: if ASMifier mode is "on", then selection of java code cannot be folowed by selection of appropriated bytecode instruction, and vice - versa; the "show raw bytecode" action is also meaningless.

3) Window -> Show View -> Other -> Java -> Bytecode reference

to see reference documentation to selected bytecode instruction in the bytecode view. This documentation is taken from "Java Virtual Machine" by Jon Meyer & Troy Downing Copyright (c) 1997 by O'Reilly & Associates, and provided with permission of O'Reilly Media, Inc. Packaging, cleanup, reformatting and XSL transformation completed by Eugene Kuleshov (eu@javatx.org).

4) Help -> Help contents -> JVM Instruction Reference

to see the entire bytecode reference documentation, provided with BCO plugin.

Feedback

You can participate in general ASM mailing list at: forge.objectweb.org/mail/?group_id=23

You can post bugs / feature requests at: forge.objectweb.org/tracker/?group_id=23

Please send comments to loskutov

Vote for Bytecode Outline at Eclipse Marketplace
or add ASM to your stack at Ohloh
Support development of the plugin:

History

New in 2.4.2 (Eclipse 3.6-4.3 only) [22.12.2013]

  • Preliminary support for Java 8 (based on latest ASM 5.0 developer snapshot)

    See https://bugs.eclipse.org/bugs/show_bug.cgi?id=380190 and https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_(BETA) for details about Java 8 Eclipse support

New in 2.4.1 (Eclipse 3.6-3.8 only) [12.05.2012]

  • Smaller bug fixes

New in 2.4.0 (Eclipse 3.6-3.7 only) [30.10.2011]

  • Feature: updated to the major ASM 4.0 release, supporting Java 7 class format. Plugin now requires Java 5.

  • New features for BCO view:

    • added code highlighting (limited to the java code style), also in ASMifier mode

    • added <Ctrl+Click> navigation to java types

    • added javadoc hover for java types

    • added opcode doc hover for opcodes

  • Fix for BC reference view - in case nothing useful is selected, show the index page for all opcodes

New in 2.3.1 (Eclipse 3.6-3.7 only) [14.08.2010]

  • Smaller fixes for Eclipse 3.6

New in 2.3.0 (Eclipse 3.5-3.6 only) [30.05.2010]

  • Updated ASM library to 3.3 version

New in 2.2.12 (Eclipse 3.4-3.5 only) [20.07.2009]

  • Feature (not released 2.2.11 version): source attachment button added to the class file editor toolbar

  • Bugfix: double click in class editor ruler should toggle breakpoint

New in 2.2.10 (Eclipse 3.4-3.5 only) [27.06.2009]

  • Updated to the newest ASM 3.2 libraries (different bugfixes, support of invokedynamic (JSR 292))

New in 2.2.9 (Eclipse 3.4-3.5 only) [03.05.2009]

  • Fixed Eclipse 3.5 incompatibilities only

New in 2.2.8 (Eclipse 3.4 only) [07.01.2009]

  • Fixed (again) anonymous inner class name resolution issues

  • Added decompiled class name to the view description

New in 2.2.7 (Eclipse 3.4 only) [24.11.2008]

  • Fixed bytecode compare dialog

  • Updated to the latest ASM core library

New in 2.2.6 (Eclipse 3.4 only) [17.08.2008]

  • All the fixes in 2.2.6 (and some in 2.2.5) are the results of bug reports from Dave Latham, thank you Dave!

  • Fixed broken "linking" on line selection in BCO between bytecode analyzer pane and editor.

  • Fixed empty bytecode analyzer pane on first view startup.

  • Fixed stack information in bytecode analyzer pane (stack info was shown randomly at wrong offsets).

  • Added "ASM instruction offset" column in bytecode analyzer pane.

New in 2.2.5 (Eclipse 3.4 only) [02.07.2008]

  • Added preference page for BCO (Window->Preferences->Java->Bytecode Outline)

  • Fixed "disabled view" bug after toggling "link with editor" off in the outline view

  • Fixed "BadLocationException" bug in decompiled bytecode editor

  • Updated to the latest ASM version (3.1 from CVS HEAD)

New in 2.2.4 (Eclipse 3.4 only) [18.05.2008]

  • Fixed some Eclipse 3.4 related problems in bytecode outline view

New in 2.2.3 (Eclipse 3.3 only) [06.10.2007]

  • Fixed some Eclipse 3.3 related problems in bytecode compare editor and bytecode reference view

  • Bytecode refrence view is now additionally linked to decompiled class editor

  • Bytecode refrence view and bytecode compare editor remembers last used setings

New in 2.2.2 (Eclipse 3.3 only) [03.07.2007]

  • Same as 2.2.0 beta, just ported to Eclipse 3.3.

New in 2.2.1 [03.07.2007]

  • Was never released :o)

New in 2.2.0 (Eclipse 3.2 only) [03.07.2007]

  • Same as 2.2.0 beta, it was stable enough :o)

New in 2.2.0 beta (for testing / feature requests) [08.01.2007]

Changelist since last public BCO 2.1.0, without any meaningful order:

  1. "Options to show non decimal values for numeric constants in the bytecode"

  2. "Add popup menu to bco view to open bytecode reference view"

  3. "Add index page with all opcodes for Bytecode Reference View"

  4. "Support for linking with outline view"

  5. "Synchronize selection between Java editor and bco": first part (Java->BCO) implemented

  6. "Allow to compare two methods in the same class"

  7. Improved inner class support (again)

  8. Added bytecode disassembler (readonly) working as a replacement for default (readonly) class editor for classes from linked libraries. If you know jadclipse, you may got the idea. The difference is that it shows bytecode and not Java code, and it is OS-independent (jadclipse works on Win32 only). This feature requires Eclipse 3.2.

  9. Added (limited) debugging support. You may now debug classes from linked libraries using bytecode disassembler. It is not a full featured debugger and is useful only if you need to debug classes without assotiated source code. This feature requires Eclipse 3.2.

  10. All settings in BCO view are now persistent between Eclipse starts.

  11. Added "togle link with BCO view on/off" button to bytecode reference view.

  12. Included ASM 3.0 final (support for new Java 1.6 bytecode additions)

  13. Bytecode compare got additional formatting options (show/hide: line info, local vars, stack map attributes)

  14. Class files *not* on the Java classpath may be also opened with bytecode disassembler (readonly)

  15. Different smaller bugfixes.

  16. I may also forgot something, it's a long time since 2.1.0 :o)

Please notice, that because of new "bytecode editor/debugger" features (see points 8 & 9) latest BCO sources was compiled against Eclipse 3.2. The BCO view itself may still work with Eclipse 3.1, but it is not more guaranteed/tested. The "bytecode editor/debugger" features are also *not* compatible with latest Eclipse 3.3 milestones.

Please report bugs here:
http://forge.objectweb.org/tracker/?atid=100023&group_id=23&func=browse
and feature requests here:
http://forge.objectweb.org/tracker/?atid=350023&group_id=23&func=browse

New in version 2.1.0

  • This version is using a new ASM 3.0 beta library with support for new Java 1.6 bytecode structures (StackMap/Frames).

  • Added support for Java 1.5 changes in naming strategy of anonymous and inner classes. Fixed some issues with constructors of inner classes.

  • Line numbers and local variables could be now switched on/off in both BCO view and bytecode compare editor.

  • Compatibility fixes for Eclipse 3.2.

  • Bytecode Outline is distributed now again as one plugin, ASM libraries are included inside. The plugin is deployed now also as a single jar file - you do not need to unzip it.

  • Minor bugfixes / improvements.

New in version 2.0.2

New bytecode reference view shows "javadoc" to the selected bytecode instruction. Fixed strange "default" java editor bug on Eclipse 3.1.

New in version 2.0.1

New status line shows bytecode class version, class file size and current bytecode offset. Fixes for exceptions after refactoring of existing classes. Fixes for analyser view on abstract methods/interfaces, performance/selection fix.

New in version 2.0.0

  • Port to ASM 2.0

  • Support new JDK 1.5 features (annotations, generics)

  • New option to see the local variables table and stack operands for
    each instruction

  • added copy/select/find actions to bytecode/asm code view

  • support for AnyEdit "open type under cursor" / "open file under cursor" actions

  • bugfixes and minor enhancements

New in version 1.3.1

Fixed ASMifier view output in "show current element" mode (bug reported by Steven Harris).

New in version 1.3

Added "Toggle ASMifier mode on/off" functionality on both Bytecode Outline and Compare View.

New in version 1.2

Added "bytecode compare" for referenced or generated *.class files. Fixed problems with shared sourcecode / bytecode output folders.

New in version 1.1

Added support for ASM "attributes" package. Fixed bug with mixed sourcecode / bytecode im project root. Minor cosmetic changes.

New in version 1.0

This release is the first stable public release. Any bug comments are welcome.

Last changed at: 22.12.2013 19:16