From 4e6c77f68c6df72c1e3378745653ca702100e932 Mon Sep 17 00:00:00 2001 From: Laura Abbott <lauraa@codeaurora.org> Date: Tue, 11 Mar 2014 14:57:25 -0700 Subject: [PATCH] linux-ramdump-parser-v2: cleanup output of tracing When tracing with read_physical, the result of what was read is printed. The result may contain unprintable characters which wreak havok on terminals. re-use the cleanupString function which is already in use in several places to make the output readable. Change-Id: I1a62c88f1d51038ba2c429d8ec918c58d39af4bf --- linux-ramdump-parser-v2/parser_util.py | 6 ++++++ linux-ramdump-parser-v2/parsers/dmesg.py | 10 ++-------- linux-ramdump-parser-v2/parsers/taskdump.py | 9 +-------- linux-ramdump-parser-v2/ramdump.py | 3 ++- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/linux-ramdump-parser-v2/parser_util.py b/linux-ramdump-parser-v2/parser_util.py index 2b03cba..ae2449b 100644 --- a/linux-ramdump-parser-v2/parser_util.py +++ b/linux-ramdump-parser-v2/parser_util.py @@ -13,6 +13,7 @@ import os import platform import glob import re +import string _parsers = [] @@ -29,6 +30,11 @@ class ParserConfig(object): self.shortopt = shortopt self.optional = optional +def cleanupString(unclean_str): + if unclean_str is None: + return unclean_str + else: + return ''.join([c for c in unclean_str if c in string.printable]) def register_parser(longopt, desc, shortopt=None, optional=False): """Decorator to register a parser class (a class that inherits from diff --git a/linux-ramdump-parser-v2/parsers/dmesg.py b/linux-ramdump-parser-v2/parsers/dmesg.py index 5f900af..b2dded2 100644 --- a/linux-ramdump-parser-v2/parsers/dmesg.py +++ b/linux-ramdump-parser-v2/parsers/dmesg.py @@ -13,7 +13,7 @@ import re import string from print_out import print_out_str -from parser_util import register_parser, RamParser +from parser_util import register_parser, RamParser, cleanupString @register_parser('--dmesg', 'Print the dmesg', shortopt='-d') @@ -23,17 +23,11 @@ class Dmesg(RamParser): super(Dmesg, self).__init__(*args) self.wrap_cnt = 0 - def cleanupString(self, unclean_str): - if unclean_str is None: - return str - else: - return ''.join([c for c in unclean_str if c in string.printable]) - def extract_dmesg_flat(self, ramdump): addr = ramdump.read_word(ramdump.addr_lookup('log_buf')) size = ramdump.read_word(ramdump.addr_lookup('log_buf_len')) dmesg = ramdump.read_physical(ramdump.virt_to_phys(addr), size) - print_out_str(self.cleanupString(dmesg.decode('ascii', 'ignore'))) + print_out_str(cleanupString(dmesg.decode('ascii', 'ignore'))) def log_from_idx(self, ramdump, idx, logbuf): len_offset = ramdump.field_offset('struct log', 'len') diff --git a/linux-ramdump-parser-v2/parsers/taskdump.py b/linux-ramdump-parser-v2/parsers/taskdump.py index 7de493c..387c9dc 100644 --- a/linux-ramdump-parser-v2/parsers/taskdump.py +++ b/linux-ramdump-parser-v2/parsers/taskdump.py @@ -11,14 +11,7 @@ import string from print_out import print_out_str -from parser_util import register_parser, RamParser - - -def cleanupString(str): - if str is None: - return str - else: - return ''.join([c for c in str if c in string.printable]) +from parser_util import register_parser, RamParser, cleanupString cpu_context_save_str = ''.join([ 'I', # __u32 r4 diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index 678e1c6..ea0904e 100644 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -21,6 +21,7 @@ from tempfile import NamedTemporaryFile import gdbmi from print_out import print_out_str from mmu import Armv7MMU, Armv7LPAEMMU +from parser_util import cleanupString FP = 11 SP = 13 @@ -898,7 +899,7 @@ class RamDump(): ebi[0].seek(offset) a = ebi[0].read(length) if trace: - print_out_str('result = {0}'.format(a)) + print_out_str('result = {0}'.format(cleanupString(a))) print_out_str('lenght = {0}'.format(len(a))) return a -- GitLab