have started looking at decompiling ELISP bytecode using the techniques from uncompyle6 . So far the results are promising. Of course one isn't going to get the exact source text back. For the bytecode for source text (setq a nil) (setq b nil) when decompiled gives the equivalent: (setq a (setq b nil)) And macros will be in their expanded form. But I believe nevertheless programmers will have a very good idea of what was going on when an error was raised.