forked from OSchip/llvm-project
Now that we have an LLDB package, make the "lldb.macosx.crashlog" module work with all of the new module paths.
llvm-svn: 155528
This commit is contained in:
parent
68b922590d
commit
ed3eee6e55
|
@ -20,14 +20,15 @@ import commands
|
|||
import optparse
|
||||
import os
|
||||
import shlex
|
||||
import symbolication # from lldb/examples/python/symbolication.py
|
||||
import lldb.utils.symbolication
|
||||
|
||||
def load_dylib():
|
||||
if lldb.target:
|
||||
python_module_directory = os.path.dirname(__file__)
|
||||
libheap_dylib_path = python_module_directory + '/libheap.dylib'
|
||||
heap_code_directory = python_module_directory + '/heap'
|
||||
libheap_dylib_path = heap_code_directory + '/heap/libheap.dylib'
|
||||
if not os.path.exists(libheap_dylib_path):
|
||||
make_command = '(cd "%s" ; make)' % python_module_directory
|
||||
make_command = '(cd "%s" ; make)' % heap_code_directory
|
||||
print make_command
|
||||
print commands.getoutput(make_command)
|
||||
if os.path.exists(libheap_dylib_path):
|
||||
|
@ -172,7 +173,7 @@ def heap_search(options, arg_str):
|
|||
lldb.debugger.GetCommandInterpreter().HandleCommand(memory_command, cmd_result)
|
||||
print cmd_result.GetOutput()
|
||||
if options.stack:
|
||||
symbolicator = symbolication.Symbolicator()
|
||||
symbolicator = lldb.utils.symbolication.Symbolicator()
|
||||
symbolicator.target = lldb.target
|
||||
expr_str = "g_stack_frames_count = sizeof(g_stack_frames)/sizeof(uint64_t); (int)__mach_stack_logging_get_frames((unsigned)mach_task_self(), 0x%xull, g_stack_frames, g_stack_frames_count, &g_stack_frames_count)" % (malloc_addr)
|
||||
#print expr_str
|
||||
|
|
|
@ -37,7 +37,7 @@ import shlex
|
|||
import sys
|
||||
import time
|
||||
import uuid
|
||||
import symbolication
|
||||
import lldb.utils.symbolication
|
||||
|
||||
PARSE_MODE_NORMAL = 0
|
||||
PARSE_MODE_THREAD = 1
|
||||
|
@ -45,7 +45,7 @@ PARSE_MODE_IMAGES = 2
|
|||
PARSE_MODE_THREGS = 3
|
||||
PARSE_MODE_SYSTEM = 4
|
||||
|
||||
class CrashLog(symbolication.Symbolicator):
|
||||
class CrashLog(lldb.utils.symbolication.Symbolicator):
|
||||
"""Class that does parses darwin crash logs"""
|
||||
thread_state_regex = re.compile('^Thread ([0-9]+) crashed with')
|
||||
thread_regex = re.compile('^Thread ([0-9]+)([^:]*):(.*)')
|
||||
|
@ -97,7 +97,7 @@ class CrashLog(symbolication.Symbolicator):
|
|||
else:
|
||||
return "[%3u] 0x%16.16x" % (self.index, self.pc)
|
||||
|
||||
class DarwinImage(symbolication.Image):
|
||||
class DarwinImage(lldb.utils.symbolication.Image):
|
||||
"""Class that represents a binary images in a darwin crash log"""
|
||||
dsymForUUIDBinary = os.path.expanduser('~rc/bin/dsymForUUID')
|
||||
if not os.path.exists(dsymForUUIDBinary):
|
||||
|
@ -106,8 +106,8 @@ class CrashLog(symbolication.Symbolicator):
|
|||
dwarfdump_uuid_regex = re.compile('UUID: ([-0-9a-fA-F]+) \(([^\(]+)\) .*')
|
||||
|
||||
def __init__(self, text_addr_lo, text_addr_hi, identifier, version, uuid, path):
|
||||
symbolication.Image.__init__(self, path, uuid);
|
||||
self.add_section (symbolication.Section(text_addr_lo, text_addr_hi, "__TEXT"))
|
||||
lldb.utils.symbolication.Image.__init__(self, path, uuid);
|
||||
self.add_section (lldb.utils.symbolication.Section(text_addr_lo, text_addr_hi, "__TEXT"))
|
||||
self.identifier = identifier
|
||||
self.version = version
|
||||
|
||||
|
@ -158,7 +158,7 @@ class CrashLog(symbolication.Symbolicator):
|
|||
|
||||
def __init__(self, path):
|
||||
"""CrashLog constructor that take a path to a darwin crash log file"""
|
||||
symbolication.Symbolicator.__init__(self);
|
||||
lldb.utils.symbolication.Symbolicator.__init__(self);
|
||||
self.path = os.path.expanduser(path);
|
||||
self.info_lines = list()
|
||||
self.system_profile = list()
|
||||
|
@ -313,7 +313,7 @@ class CrashLog(symbolication.Symbolicator):
|
|||
|
||||
def create_target(self):
|
||||
#print 'crashlog.create_target()...'
|
||||
target = symbolication.Symbolicator.create_target(self)
|
||||
target = lldb.utils.symbolication.Symbolicator.create_target(self)
|
||||
if target:
|
||||
return target
|
||||
# We weren't able to open the main executable as, but we can still symbolicate
|
||||
|
@ -446,11 +446,11 @@ be disassembled and lookups can be performed using the addresses found in the cr
|
|||
instructions = symbolicated_frame_address.get_instructions()
|
||||
if instructions:
|
||||
print
|
||||
symbolication.disassemble_instructions (target,
|
||||
instructions,
|
||||
frame.pc,
|
||||
options.disassemble_before,
|
||||
options.disassemble_after, frame.index > 0)
|
||||
lldb.utils.symbolication.disassemble_instructions (target,
|
||||
instructions,
|
||||
frame.pc,
|
||||
options.disassemble_before,
|
||||
options.disassemble_after, frame.index > 0)
|
||||
print
|
||||
symbolicated_frame_address_idx += 1
|
||||
else:
|
||||
|
@ -467,6 +467,6 @@ if __name__ == '__main__':
|
|||
lldb.debugger = lldb.SBDebugger.Create()
|
||||
SymbolicateCrashLog (sys.argv[1:])
|
||||
elif lldb.debugger:
|
||||
lldb.debugger.HandleCommand('command script add -f crashlog.Symbolicate crashlog')
|
||||
lldb.debugger.HandleCommand('command script add -f lldb.macosx.crashlog.Symbolicate crashlog')
|
||||
print '"crashlog" command installed, type "crashlog --help" for detailed help'
|
||||
|
||||
|
|
|
@ -240,12 +240,24 @@ create_python_package "/formatters" "${package_files}"
|
|||
package_files="${SRC_ROOT}/examples/python/symbolication.py"
|
||||
create_python_package "/utils" "${package_files}"
|
||||
|
||||
# lldb/macosx
|
||||
package_files="${SRC_ROOT}/examples/python/crashlog.py
|
||||
${SRC_ROOT}/examples/darwin/heap_find/heap.py"
|
||||
create_python_package "/macosx" "${package_files}"
|
||||
if [ ${OS_NAME} == "Darwin" ]
|
||||
then
|
||||
# lldb/macosx
|
||||
package_files="${SRC_ROOT}/examples/python/crashlog.py
|
||||
${SRC_ROOT}/examples/darwin/heap_find/heap.py"
|
||||
create_python_package "/macosx" "${package_files}"
|
||||
|
||||
# Copy files needed by lldb/macosx/heap.py to build libheap.dylib
|
||||
heap_dir="${framework_python_dir}/macosx/heap"
|
||||
if [ ! -d "${heap_dir}" ]
|
||||
then
|
||||
mkdir -p "${heap_dir}"
|
||||
cp "${SRC_ROOT}/examples/darwin/heap_find/heap/heap_find.cpp" "${heap_dir}"
|
||||
cp "${SRC_ROOT}/examples/darwin/heap_find/heap/Makefile" "${heap_dir}"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
|
|
|
@ -534,7 +534,7 @@ ScriptInterpreterPython::ExecuteOneLine (const char *command, CommandReturnObjec
|
|||
if (script_interpreter_dict != NULL)
|
||||
{
|
||||
PyObject *pfunc = (PyObject*)m_run_one_line;
|
||||
PyObject *pmod = PyImport_AddModule ("embedded_interpreter");
|
||||
PyObject *pmod = PyImport_AddModule ("lldb.embedded_interpreter");
|
||||
if (pmod != NULL)
|
||||
{
|
||||
PyObject *pmod_dict = PyModule_GetDict (pmod);
|
||||
|
|
Loading…
Reference in New Issue