Пример #1
0
def main(args=sys.argv):
    parser = optparse.OptionParser(prog="caulk", description="Tool to examine memory dumps.")
    parser.add_option("-d", "--debug", action='store_true', help="Break into debugger.")
    parser.add_option("-c", "--classes", action='store_true', help="Prints a list of classes the counts and total memory used.")
    parser.add_option("-D", "--diff", action='store_true', help="Compares two dump files, printing the difference.")
    parser.add_option("-r", "--references", help="Prints class references.")
    parser.add_option("-i", "--instances", help="Prints class instances.")
    parser.add_option("-s", "--stack", type='int', help="Print reference stack for a given instance.")

    (options, args) = parser.parse_args(args)

    # Remove the script name
    args = args[1:]

    if options.debug:
        import pdb; pdb.set_trace()

    if options.classes:
        if len(args) != 1:
            parser.error('You must provide one dump file in this mode.')
        with file(args[0], 'r') as f:
            dump = load(f)
        classes(dump)

    if options.diff:
        if len(args) != 2:
            parser.error('You must provide two dump files in this mode.')
        with file(args[0], 'r') as f:
            dump1 = load(f)
        with file(args[1], 'r') as f:
            dump2 = load(f)
        diff(dump1, dump2)

    if options.references:
        if len(args) != 1:
            parser.error('You must provide one dump file in this mode.')
        with file(args[0], 'r') as f:
            dump = load(f)
        references(dump, classes=(options.references, ))

    if options.instances:
        if len(args) != 1:
            parser.error('You must provide one dump file in this mode.')
        with file(args[0], 'r') as f:
            dump = load(f)
        instances(dump, classes=(options.instances, ))

    if options.stack:
        if len(args) != 1:
            parser.error('You must provide one dump file in this mode.')
        with file(args[0], 'r') as f:
            dump = load(f)
        stack(dump, id=options.stack)
Пример #2
0
 def test_dump_load(self):
     f = StringIO()
     caulk.dump(f)
     f.seek(0)
     caulk.load(f)