49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import re
|
|
import argparse
|
|
|
|
def parse_log(file_path):
|
|
# Compile regular expressions for the required substrings and format
|
|
pc_line_pattern = re.compile(r"^\s+(\d+):.*?PC=0x([\da-f]+).*?instr=(0xbe90a013|0xe0d0a013).*?$")
|
|
commit_line_pattern = re.compile(r"^\s+(\d+):.*commit:.*$")
|
|
# PC=0x800007a0, instr=0xbe90a013
|
|
# Initialize dictionaries to track first and last occurrences
|
|
beg_const = "0xbe90a013"
|
|
end_const = "0xe0d0a013"
|
|
occurrences = {
|
|
beg_const: {"first": None, "last": None},
|
|
end_const: {"first": None, "last": None}
|
|
}
|
|
# pc = {
|
|
# "0xbe90a013": None,
|
|
# "0xe0d0a013": None
|
|
# }
|
|
|
|
with open(file_path, 'r') as log_file:
|
|
for line in log_file:
|
|
match = pc_line_pattern.search(line)
|
|
if match:
|
|
timestamp = int(match.group(1))
|
|
pc_value = match.group(2)
|
|
data_value = match.group(3)
|
|
|
|
if occurrences[data_value]["first"] is None:
|
|
occurrences[data_value]["first"] = timestamp
|
|
occurrences[data_value]["last"] = timestamp
|
|
|
|
return occurrences
|
|
|
|
if __name__ == "__main__":
|
|
# Set up command-line argument parsing
|
|
parser = argparse.ArgumentParser(description="Parse log file for specific substrings and their timestamps.")
|
|
parser.add_argument("file_path", help="Path to the log file to parse")
|
|
|
|
# Parse command-line arguments
|
|
args = parser.parse_args()
|
|
|
|
# Parse the log file and print the result
|
|
result = parse_log(args.file_path)
|
|
# print(result)
|
|
|
|
print(f"{int((result['0xe0d0a013']['last'] - result['0xbe90a013']['first']) * 0.4)}")
|
|
|