Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(360)

Side by Side Diff: tools/grokdump.py

Issue 7566033: grokdump: Tiny bugfix and type list update. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2011 the V8 project authors. All rights reserved. 3 # Copyright 2011 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 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 def ReadBytes(self, address, size): 338 def ReadBytes(self, address, size):
339 location = self.FindLocation(address) 339 location = self.FindLocation(address)
340 return self.minidump[location:location + size] 340 return self.minidump[location:location + size]
341 341
342 def FindLocation(self, address): 342 def FindLocation(self, address):
343 offset = 0 343 offset = 0
344 if self.memory_list64 is not None: 344 if self.memory_list64 is not None:
345 for r in self.memory_list64.ranges: 345 for r in self.memory_list64.ranges:
346 if r.start <= address < r.start + r.size: 346 if r.start <= address < r.start + r.size:
347 return self.memory_list64.base_rva + offset + address - r.start 347 return self.memory_list64.base_rva + offset + address - r.start
348 offset += r.size 348 offset += r.size
349 if self.memory_list is not None: 349 if self.memory_list is not None:
350 for r in self.memory_list.ranges: 350 for r in self.memory_list.ranges:
351 if r.start <= address < r.start + r.memory.data_size: 351 if r.start <= address < r.start + r.memory.data_size:
352 return r.memory.rva + address - r.start 352 return r.memory.rva + address - r.start
353 return None 353 return None
354 354
355 def GetDisasmLines(self, address, size): 355 def GetDisasmLines(self, address, size):
356 location = self.FindLocation(address) 356 location = self.FindLocation(address)
357 if location is None: return [] 357 if location is None: return []
358 return disasm.GetDisasmLines(self.minidump_name, 358 return disasm.GetDisasmLines(self.minidump_name,
(...skipping 13 matching lines...) Expand all
372 # #define DUMP_TYPE(T) printf("%d: \"%s\",\n", T, #T); 372 # #define DUMP_TYPE(T) printf("%d: \"%s\",\n", T, #T);
373 # struct P { 373 # struct P {
374 # P() { 374 # P() {
375 # printf("{\n"); 375 # printf("{\n");
376 # INSTANCE_TYPE_LIST(DUMP_TYPE) 376 # INSTANCE_TYPE_LIST(DUMP_TYPE)
377 # printf("}\n"); 377 # printf("}\n");
378 # } 378 # }
379 # }; 379 # };
380 # static P p; 380 # static P p;
381 INSTANCE_TYPES = { 381 INSTANCE_TYPES = {
382 64: "SYMBOL_TYPE", 382 64: "SYMBOL_TYPE",
383 68: "ASCII_SYMBOL_TYPE", 383 68: "ASCII_SYMBOL_TYPE",
384 65: "CONS_SYMBOL_TYPE", 384 65: "CONS_SYMBOL_TYPE",
385 69: "CONS_ASCII_SYMBOL_TYPE", 385 69: "CONS_ASCII_SYMBOL_TYPE",
386 66: "EXTERNAL_SYMBOL_TYPE", 386 66: "EXTERNAL_SYMBOL_TYPE",
387 74: "EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE", 387 74: "EXTERNAL_SYMBOL_WITH_ASCII_DATA_TYPE",
388 70: "EXTERNAL_ASCII_SYMBOL_TYPE", 388 70: "EXTERNAL_ASCII_SYMBOL_TYPE",
389 0: "STRING_TYPE", 389 0: "STRING_TYPE",
390 4: "ASCII_STRING_TYPE", 390 4: "ASCII_STRING_TYPE",
391 1: "CONS_STRING_TYPE", 391 1: "CONS_STRING_TYPE",
392 5: "CONS_ASCII_STRING_TYPE", 392 5: "CONS_ASCII_STRING_TYPE",
393 2: "EXTERNAL_STRING_TYPE", 393 2: "EXTERNAL_STRING_TYPE",
394 10: "EXTERNAL_STRING_WITH_ASCII_DATA_TYPE", 394 10: "EXTERNAL_STRING_WITH_ASCII_DATA_TYPE",
395 6: "EXTERNAL_ASCII_STRING_TYPE", 395 6: "EXTERNAL_ASCII_STRING_TYPE",
396 6: "PRIVATE_EXTERNAL_ASCII_STRING_TYPE", 396 6: "PRIVATE_EXTERNAL_ASCII_STRING_TYPE",
397 128: "MAP_TYPE", 397 128: "MAP_TYPE",
398 129: "CODE_TYPE", 398 129: "CODE_TYPE",
399 130: "ODDBALL_TYPE", 399 130: "ODDBALL_TYPE",
400 131: "JS_GLOBAL_PROPERTY_CELL_TYPE", 400 131: "JS_GLOBAL_PROPERTY_CELL_TYPE",
401 132: "HEAP_NUMBER_TYPE", 401 132: "HEAP_NUMBER_TYPE",
402 133: "FOREIGN_TYPE", 402 133: "FOREIGN_TYPE",
403 134: "BYTE_ARRAY_TYPE", 403 134: "BYTE_ARRAY_TYPE",
404 135: "EXTERNAL_BYTE_ARRAY_TYPE", 404 135: "EXTERNAL_BYTE_ARRAY_TYPE",
405 136: "EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE", 405 136: "EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE",
406 137: "EXTERNAL_SHORT_ARRAY_TYPE", 406 137: "EXTERNAL_SHORT_ARRAY_TYPE",
407 138: "EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE", 407 138: "EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE",
408 139: "EXTERNAL_INT_ARRAY_TYPE", 408 139: "EXTERNAL_INT_ARRAY_TYPE",
409 140: "EXTERNAL_UNSIGNED_INT_ARRAY_TYPE", 409 140: "EXTERNAL_UNSIGNED_INT_ARRAY_TYPE",
410 141: "EXTERNAL_FLOAT_ARRAY_TYPE", 410 141: "EXTERNAL_FLOAT_ARRAY_TYPE",
411 143: "EXTERNAL_PIXEL_ARRAY_TYPE", 411 143: "EXTERNAL_PIXEL_ARRAY_TYPE",
412 145: "FILLER_TYPE", 412 145: "FILLER_TYPE",
413 146: "ACCESSOR_INFO_TYPE", 413 146: "ACCESSOR_INFO_TYPE",
414 147: "ACCESS_CHECK_INFO_TYPE", 414 147: "ACCESS_CHECK_INFO_TYPE",
415 148: "INTERCEPTOR_INFO_TYPE", 415 148: "INTERCEPTOR_INFO_TYPE",
416 149: "CALL_HANDLER_INFO_TYPE", 416 149: "CALL_HANDLER_INFO_TYPE",
417 150: "FUNCTION_TEMPLATE_INFO_TYPE", 417 150: "FUNCTION_TEMPLATE_INFO_TYPE",
418 151: "OBJECT_TEMPLATE_INFO_TYPE", 418 151: "OBJECT_TEMPLATE_INFO_TYPE",
419 152: "SIGNATURE_INFO_TYPE", 419 152: "SIGNATURE_INFO_TYPE",
420 153: "TYPE_SWITCH_INFO_TYPE", 420 153: "TYPE_SWITCH_INFO_TYPE",
421 154: "SCRIPT_TYPE", 421 154: "SCRIPT_TYPE",
422 155: "CODE_CACHE_TYPE", 422 155: "CODE_CACHE_TYPE",
423 156: "POLYMORPHIC_CODE_CACHE_TYPE", 423 156: "POLYMORPHIC_CODE_CACHE_TYPE",
424 159: "FIXED_ARRAY_TYPE", 424 159: "FIXED_ARRAY_TYPE",
425 160: "SHARED_FUNCTION_INFO_TYPE", 425 160: "SHARED_FUNCTION_INFO_TYPE",
426 161: "JS_MESSAGE_OBJECT_TYPE", 426 161: "JS_MESSAGE_OBJECT_TYPE",
427 162: "JS_VALUE_TYPE", 427 162: "JS_VALUE_TYPE",
428 163: "JS_OBJECT_TYPE", 428 163: "JS_OBJECT_TYPE",
429 164: "JS_CONTEXT_EXTENSION_OBJECT_TYPE", 429 164: "JS_CONTEXT_EXTENSION_OBJECT_TYPE",
430 165: "JS_GLOBAL_OBJECT_TYPE", 430 165: "JS_GLOBAL_OBJECT_TYPE",
431 166: "JS_BUILTINS_OBJECT_TYPE", 431 166: "JS_BUILTINS_OBJECT_TYPE",
432 167: "JS_GLOBAL_PROXY_TYPE", 432 167: "JS_GLOBAL_PROXY_TYPE",
433 168: "JS_ARRAY_TYPE", 433 168: "JS_ARRAY_TYPE",
434 169: "JS_PROXY_TYPE", 434 169: "JS_PROXY_TYPE",
435 170: "JS_REGEXP_TYPE", 435 170: "JS_WEAK_MAP_TYPE",
436 171: "JS_FUNCTION_TYPE", 436 171: "JS_REGEXP_TYPE",
437 172: "JS_FUNCTION_PROXY_TYPE", 437 172: "JS_FUNCTION_TYPE",
438 157: "DEBUG_INFO_TYPE", 438 173: "JS_FUNCTION_PROXY_TYPE",
439 158: "BREAK_POINT_INFO_TYPE", 439 157: "DEBUG_INFO_TYPE",
440 158: "BREAK_POINT_INFO_TYPE",
440 } 441 }
441 442
442 443
443 class Printer(object): 444 class Printer(object):
444 """Printer with indentation support.""" 445 """Printer with indentation support."""
445 446
446 def __init__(self): 447 def __init__(self):
447 self.indent = 0 448 self.indent = 0
448 449
449 def Indent(self): 450 def Indent(self):
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 reader.Dispose() 841 reader.Dispose()
841 842
842 843
843 if __name__ == "__main__": 844 if __name__ == "__main__":
844 parser = optparse.OptionParser(USAGE) 845 parser = optparse.OptionParser(USAGE)
845 options, args = parser.parse_args() 846 options, args = parser.parse_args()
846 if len(args) != 1: 847 if len(args) != 1:
847 parser.print_help() 848 parser.print_help()
848 sys.exit(1) 849 sys.exit(1)
849 AnalyzeMinidump(options, args[0]) 850 AnalyzeMinidump(options, args[0])
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698