Can anyone show me an example of of using dis() with a traceback? Examples of using disassemble_string() and distb() separately if possible would be nice also.
I'm experimenting with modifying the dis module so that it returns it's results instead of using 'print' it as it goes. I want to make sure it works for all the current use cases (or as many as possible), but I haven't been able to find any examples of using dis with tracebacks using google. I keep getting various copies of the current and older Python doc pages when I search, and not much else. How much other python code depends on the dis() and disassembly() functions? Is it used by other modules or is it meant to be a stand alone tool? The changes I've made (for my own use so far) is to have disassembly() return a bare unformatted table, (list of list), that can easily be examined with python, and then to use a dis2str() function to return a nice formatted output-string from the table. In order to have dis() display properly in an interactive shell as well as printing, I have dis() return a disassembly list object with a __repr__() method to call dis2str(). class disobj(list): """ A disassembly list object """ def __init__(self, dislist, name=None, lasti=-1): self[:] = dislist self.name = name self.lasti = lasti def __repr__(self): return dis2str(self, self.name, self.lasti) That seems to work well in both the shell and with 'print'. And it still allows direct table introspection without having to parse the output. ;-) For example the get_labels() function used was reduced to ... def getlabels(dislist): """ Get labels from disassembly list table. """ return [x[4] for x in dislist if type(x[4]) is str] Another benefit, is to be able to get the results without having to redirect, capture, and then reset sys.stdout. But I still need to rewrite disassemble_string() and need to test it with tracebacks. Cheers, Ron -- http://mail.python.org/mailman/listinfo/python-list