<commit_before>#!/usr/bin/python

import lldb
import commands
import optparse
import shlex

def stack_frames(debugger, command, result, dict):
    command_args = shlex.split(command)
    usage = "usage: %prog [options] <PATH> [PATH ...]"
    description='''This command will enumerate all stack frames, print the stack size for each, and print an aggregation of which functions have the largest stack frame sizes at the end.'''
    parser = optparse.OptionParser(description=description, prog='ls',usage=usage)
    parser.add_option('-v', '--verbose', action='store_true', dest='verbose', help='display verbose debug info', default=False)
    try:
        (options, args) = parser.parse_args(command_args)
    except:
        return
    
    frame_info = {}
    for thread in lldb.process:
        last_frame = None
        print "thread %u" % (thread.id)
        for frame in thread.frames:
            if last_frame:
                frame_size = 0
                if frame.idx == 1:
                    if frame.fp == last_frame.fp:
                        # No frame one the first frame (might be right at the entry point)
                        first_frame_size = 0
                        frame_size = frame.fp - frame.sp
                    else:
                        # First frame that has a valid size
                        first_frame_size = last_frame.fp - last_frame.sp 
                    print "<%#7x> %s" % (first_frame_size, last_frame)
                    if first_frame_size:
                        name = last_frame.name
                        if name not in frame_info:
                            frame_info[name] = first_frame_size
                        else:
                            frame_info[name] += first_frame_size
                else:
                    # Second or higher frame
                    frame_size = frame.fp - last_frame.fp 
                print "<%#7x> %s" % (frame_size, frame)
                if frame_size > 0:
                    name = frame.name
                    if name not in frame_info:
                        frame_info[name] = frame_size
                    else:
                        frame_info[name] += frame_size
            last_frame = frame
    print frame_info
    

lldb.debugger.HandleCommand("command script add -f stacks.stack_frames stack_frames")
print "A new command called 'stack_frames' was added, type 'stack_frames --help' for more information."<commit_msg>Don't use "lldb." global variables in LLDB commands.<commit_after>#!/usr/bin/python

import lldb
import commands
import optparse
import shlex

def stack_frames(debugger, command, result, dict):
    command_args = shlex.split(command)
    usage = "usage: %prog [options] <PATH> [PATH ...]"
    description='''This command will enumerate all stack frames, print the stack size for each, and print an aggregation of which functions have the largest stack frame sizes at the end.'''
    parser = optparse.OptionParser(description=description, prog='ls',usage=usage)
    parser.add_option('-v', '--verbose', action='store_true', dest='verbose', help='display verbose debug info', default=False)
    try:
        (options, args) = parser.parse_args(command_args)
    except:
        return
    
    target = debugger.GetSelectedTarget()
    process = target.GetProcess()
    
    frame_info = {}
    for thread in process:
        last_frame = None
        print "thread %u" % (thread.id)
        for frame in thread.frames:
            if last_frame:
                frame_size = 0
                if frame.idx == 1:
                    if frame.fp == last_frame.fp:
                        # No frame one the first frame (might be right at the entry point)
                        first_frame_size = 0
                        frame_size = frame.fp - frame.sp
                    else:
                        # First frame that has a valid size
                        first_frame_size = last_frame.fp - last_frame.sp 
                    print "<%#7x> %s" % (first_frame_size, last_frame)
                    if first_frame_size:
                        name = last_frame.name
                        if name not in frame_info:
                            frame_info[name] = first_frame_size
                        else:
                            frame_info[name] += first_frame_size
                else:
                    # Second or higher frame
                    frame_size = frame.fp - last_frame.fp 
                print "<%#7x> %s" % (frame_size, frame)
                if frame_size > 0:
                    name = frame.name
                    if name not in frame_info:
                        frame_info[name] = frame_size
                    else:
                        frame_info[name] += frame_size
            last_frame = frame
    print frame_info
    

lldb.debugger.HandleCommand("command script add -f stacks.stack_frames stack_frames")
print "A new command called 'stack_frames' was added, type 'stack_frames --help' for more information."
{'fraction_non_alphanumeric': 0.08165704043019319, 'fraction_numerical': 0.0023899621589324837, 'mean_word_length': 1.6348373557187827, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '207572', 'n_tokens_mistral': 1347, 'n_tokens_neox': 1267, 'n_words': 398}