<commit_before>#!/usr/bin/python

#----------------------------------------------------------------------
# Be sure to add the python path that points to the LLDB shared library.
# On MacOSX csh, tcsh:
#   setenv PYTHONPATH /Developer/Library/PrivateFrameworks/LLDB.framework/Resources/Python
# On MacOSX sh, bash:
#   export PYTHONPATH=/Developer/Library/PrivateFrameworks/LLDB.framework/Resources/Python
#----------------------------------------------------------------------

import lldb
import os
import sys
import time

def disassemble_instructions (insts):
    for i in range(0, insts.GetSize()):
        print insts.GetInstructionAtIndex(i)

# Initialize LLDB so we can use it
lldb.SBDebugger.Initialize()

# Create a new debugger instance
debugger = lldb.SBDebugger.Create()

# When we step or continue, don't return from the function until the process 
# stops. We do this by setting the async mode to false.
debugger.SetAsync (False)

# Create a target from a file and arch
target = debugger.CreateTargetWithFileAndArch (sys.argv[1], "x86_64")

if target.IsValid():
    # If the target is valid set a breakpoint at main
    main_bp = target.BreakpointCreateByName ("main", "a.out");
    
    # Launch the process. Since we specified synchronous mode, we won't return
    # from this function until we hit the breakpoint at main
    process = target.LaunchProcess (sys.argv[2:], [''], "dev/stdout", 0, False)
    
    # Make sure the launch went ok
    if process.IsValid():
        # Print some simple process info
        print "process:", process, "\n"
        # Get the first thread
        thread = process.GetThreadAtIndex (0)
        if thread.IsValid():
            # Print some simple thread info
            print "thread: ", thread
            # Get the first frame
            frame = thread.GetFrameAtIndex (0)
            if frame.IsValid():
                # Print some simple frame info
                print "frame: ", frame
                function = frame.GetFunction()
                # See if we have debug info (a function)
                if function.IsValid():
                    # We do have a function, print some info for the function
                    print "function: ", function, "\n"
                    # Now get all instructions for this function and print them
                    insts = function.GetInstructions(target)
                    disassemble_instructions (insts)
                else:
                    # See if we have a symbol in the symbol table for where we stopped
                    symbol = frame.GetSymbol();
                    if symbol.IsValid():
                        # We do have a symbol, print some info for the symbol<commit_msg>Fixed a few issues with the example script.<commit_after>#!/usr/bin/python

#----------------------------------------------------------------------
# Be sure to add the python path that points to the LLDB shared library.
# On MacOSX csh, tcsh:
#   setenv PYTHONPATH /Developer/Library/PrivateFrameworks/LLDB.framework/Resources/Python
# On MacOSX sh, bash:
#   export PYTHONPATH=/Developer/Library/PrivateFrameworks/LLDB.framework/Resources/Python
#----------------------------------------------------------------------

import lldb
import os
import sys
import time

def disassemble_instructions (insts):
    for i in range(0, insts.GetSize()):
        print insts.GetInstructionAtIndex(i)

# Initialize LLDB so we can use it
lldb.SBDebugger.Initialize()

# Create a new debugger instance
debugger = lldb.SBDebugger.Create()

# When we step or continue, don't return from the function until the process 
# stops. We do this by setting the async mode to false.
debugger.SetAsync (False)

# Create a target from a file and arch
target = debugger.CreateTargetWithFileAndArch (sys.argv[1], "x86_64")

if target.IsValid():
    # If the target is valid set a breakpoint at main
    main_bp = target.BreakpointCreateByName ("main", sys.argv[1]);
    
    # Launch the process. Since we specified synchronous mode, we won't return
    # from this function until we hit the breakpoint at main
    process = target.LaunchProcess (sys.argv[2:], [''], "/dev/stdout", 0, False)
    
    # Make sure the launch went ok
    if process.IsValid():
        # Print some simple process info
        print "process:", process, "\n"
        # Get the first thread
        thread = process.GetThreadAtIndex (0)
        if thread.IsValid():
            # Print some simple thread info
            print "thread: ", thread
            # Get the first frame
            frame = thread.GetFrameAtIndex (0)
            if frame.IsValid():
                # Print some simple frame info
                print "frame: ", frame
                function = frame.GetFunction()
                # See if we have debug info (a function)
                if function.IsValid():
                    # We do have a function, print some info for the function
                    print "function: ", function, "\n"
                    # Now get all instructions for this function and print them
                    insts = function.GetInstructions(target)
                    disassemble_instructions (insts)
                else:
                    # See if we have a symbol in the symbol table for where we stopped
                    symbol = frame.GetSymbol();
                    if symbol.IsValid():
                        # We do have a symbol, print some info for the symbol
{'fraction_non_alphanumeric': 0.1258484681709778, 'fraction_numerical': 0.003852504127682994, 'mean_word_length': 1.9061833688699361, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2940939', 'n_tokens_mistral': 1413, 'n_tokens_neox': 1364, 'n_words': 534}