;;;;; title: Debugging Java with ABCL date: 2016-09-10 00:05:24 format: md tags: lisp bindings: 3bmd-code-blocks:*code-blocks-default-colorize* :common-lisp ;;;;; So after adding a dispatch mechanism into the `DISASSEMBLE` function of ABCL I also want to show a neat way of disassembling arbitrary Java classes using one of the provided disassemblers. First of, make sure that you have the ObjectWeb ASM library in your classpath (everything up from version 3 should work at least, perhaps even lower versions), note that in future releases you might be able to load it via Maven and one of the optional contribs as well, likely via `(require '#:asm-all)`. Next up, try `(disassemble #'list)` and confirm that some output is shown. Now to show bytecode for arbitrary Java classes we've got to jump through some additional hoops - though perhaps at some point this could become a stable API as well: (system::objectweb-disassemble (#"getResourceAsStream" (java:jclass "java.lang.Object") "/java/util/Random.class")) I haven't tried this via the JAD disassembler, but it seems likely that a similar approach should work for it too.