pwndbg/profiling/print_stats.py

35 lines
938 B
Python
Executable File

#!/usr/bin/env python3
import pstats
from argparse import ArgumentParser
def parse_args():
parser = ArgumentParser(description="Print the profiling stats from a pstats file")
parser.add_argument("-n", "--num", type=int, help="number of stats to print")
parser.add_argument("-f", "--filter", help="regex to match against each entry")
parser.add_argument(
"--no-strip", action="store_true", help="print the entire file path for each entry"
)
parser.add_argument("file", help="pstats file to parse")
parser.add_argument(
"-s",
"--sort",
choices=["calls", "ncalls", "cumulative", "time"],
default="cumulative",
)
return parser.parse_args()
def main():
args = parse_args()
s = pstats.Stats(args.file)
if not args.no_strip:
s.strip_dirs()
s.sort_stats(args.sort).print_stats(args.filter, args.num)
if __name__ == "__main__":
main()