Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright 2012 the V8 project authors. All rights reserved. | 3 # Copyright 2012 the V8 project authors. All rights reserved. |
| 4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
| 5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
| 6 # met: | 6 # met: |
| 7 # | 7 # |
| 8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
| 9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
| 10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
| (...skipping 1573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1584 def do_list(self, smth): | 1584 def do_list(self, smth): |
| 1585 """ | 1585 """ |
| 1586 List all available memory regions. | 1586 List all available memory regions. |
| 1587 """ | 1587 """ |
| 1588 def print_region(reader, start, size, location): | 1588 def print_region(reader, start, size, location): |
| 1589 print " %s - %s (%d bytes)" % (reader.FormatIntPtr(start), | 1589 print " %s - %s (%d bytes)" % (reader.FormatIntPtr(start), |
| 1590 reader.FormatIntPtr(start + size), | 1590 reader.FormatIntPtr(start + size), |
| 1591 size) | 1591 size) |
| 1592 print "Available memory regions:" | 1592 print "Available memory regions:" |
| 1593 self.reader.ForEachMemoryRegion(print_region) | 1593 self.reader.ForEachMemoryRegion(print_region) |
| 1594 | |
| 1595 def do_ascii(self, address): | |
|
Michael Starzinger
2012/07/03 11:43:16
How about naming this command "dascii" or just "da
Yang
2012/07/03 11:51:11
Done.
| |
| 1596 """ | |
| 1597 Print ASCII string starting at specified address. | |
|
Michael Starzinger
2012/07/03 11:43:16
Indent that by one space for consistency.
Yang
2012/07/03 11:51:11
Done.
| |
| 1598 """ | |
| 1599 address = int(address, 16) | |
| 1600 string = "" | |
| 1601 while self.reader.IsValidAddress(address): | |
| 1602 code = self.reader.ReadU8(address) | |
| 1603 if code < 128: | |
| 1604 string += chr(code) | |
| 1605 else: | |
| 1606 break | |
| 1607 address += 1 | |
| 1608 | |
| 1609 if string == "": | |
| 1610 print "Not an ASCII string at %s" % self.reader.FormatIntPtr(address) | |
| 1611 else: | |
| 1612 print "%s" % string | |
|
Michael Starzinger
2012/07/03 11:43:16
Maybe we should put parentheses around the string.
Yang
2012/07/03 11:51:11
Quotes don't work that well since the string may n
| |
| 1594 | 1613 |
| 1595 | 1614 |
| 1596 EIP_PROXIMITY = 64 | 1615 EIP_PROXIMITY = 64 |
| 1597 | 1616 |
| 1598 CONTEXT_FOR_ARCH = { | 1617 CONTEXT_FOR_ARCH = { |
| 1599 MD_CPU_ARCHITECTURE_AMD64: | 1618 MD_CPU_ARCHITECTURE_AMD64: |
| 1600 ['rax', 'rbx', 'rcx', 'rdx', 'rdi', 'rsi', 'rbp', 'rsp', 'rip'], | 1619 ['rax', 'rbx', 'rcx', 'rdx', 'rdi', 'rsi', 'rbp', 'rsp', 'rip'], |
| 1601 MD_CPU_ARCHITECTURE_X86: | 1620 MD_CPU_ARCHITECTURE_X86: |
| 1602 ['eax', 'ebx', 'ecx', 'edx', 'edi', 'esi', 'ebp', 'esp', 'eip'] | 1621 ['eax', 'ebx', 'ecx', 'edx', 'edi', 'esi', 'ebp', 'esp', 'eip'] |
| 1603 } | 1622 } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1673 parser = optparse.OptionParser(USAGE) | 1692 parser = optparse.OptionParser(USAGE) |
| 1674 parser.add_option("-s", "--shell", dest="shell", action="store_true", | 1693 parser.add_option("-s", "--shell", dest="shell", action="store_true", |
| 1675 help="start an interactive inspector shell") | 1694 help="start an interactive inspector shell") |
| 1676 parser.add_option("-f", "--full", dest="full", action="store_true", | 1695 parser.add_option("-f", "--full", dest="full", action="store_true", |
| 1677 help="dump all information contained in the minidump") | 1696 help="dump all information contained in the minidump") |
| 1678 options, args = parser.parse_args() | 1697 options, args = parser.parse_args() |
| 1679 if len(args) != 1: | 1698 if len(args) != 1: |
| 1680 parser.print_help() | 1699 parser.print_help() |
| 1681 sys.exit(1) | 1700 sys.exit(1) |
| 1682 AnalyzeMinidump(options, args[0]) | 1701 AnalyzeMinidump(options, args[0]) |
| OLD | NEW |