R
Ron Adam
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
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