Debugger: Progress on LLDB integration

Some breakpoints trigger real state changes now,
some locals display name and type (no values yet)

Change-Id: I1736d4b499f22b92d4680519853a09558e9dbbf4
Reviewed-by: hjk <hjk121@nokiamail.com>
This commit is contained in:
hjk
2013-04-04 12:23:29 +02:00
parent df674a2add
commit 8212af6e52
3 changed files with 263 additions and 51 deletions
+108 -19
View File
@@ -5,6 +5,12 @@ cdbLoaded = False
lldbLoaded = False
gdbLoaded = False
#######################################################################
#
# Helpers
#
#######################################################################
def warn(message):
print "XXX: %s\n" % message.encode("latin1")
@@ -18,37 +24,34 @@ def showException(msg, exType, exValue, exTraceback):
except:
pass
#######################################################################
#
# CDB
#
#######################################################################
try:
#import cdb_bridge
import cdb_bridge
cdbLoaded = True
except:
pass
try:
#import lldb_bridge
lldbLoaded = True
except:
pass
#######################################################################
#
# GDB
#
#######################################################################
try:
if cdbLoaded:
raise "Not needed"
import gdb
gdbLoaded = True
#######################################################################
#
# Sanitize environment
#
#######################################################################
#try:
# gdb.execute("set auto-load-scripts no")
#except:
# pass
#######################################################################
#
# Infrastructure
@@ -434,3 +437,89 @@ try:
except:
pass
#######################################################################
#
# LLDB
#
#######################################################################
try:
if gdbLoaded or cdbLoaded:
raise "Not needed"
lldbLoaded = True
PointerCode, \
ArrayCode, \
StructCode, \
UnionCode, \
EnumCode, \
FlagsCode, \
FunctionCode, \
IntCode, \
FloatCode, \
VoidCode, \
SetCode, \
RangeCode, \
StringCode, \
BitStringCode, \
ErrorTypeCode, \
MethodCode, \
MethodPointerCode, \
MemberPointerCode, \
ReferenceCode, \
CharCode, \
BoolCode, \
ComplexCode, \
TypedefCode, \
NamespaceCode \
= range(24)
def registerCommand(name, func):
pass
class Type:
def __init__(self, type):
self.raw = type
self.code = IntCode
def __str__(self):
return self.raw.name
def unqualified(self):
return self
class Value:
def __init__(self, var):
self.raw = var
self.is_optimized_out = False
self.type = Type(var.type)
self.type.value_type = var.value_type
def __str__(self):
return self.name
currentThread = None
currentFrame = None
def listOfLocals(varList):
global currentThread
global currentFrame
items = []
currentThread = lldb.process.GetThreadAtIndex(0)
currentFrame = currentThread.GetFrameAtIndex(0)
for var in currentFrame.variables:
item = LocalItem()
item.iname = "local." + var.name
item.name = var.name
item.value = Value(var)
items.append(item)
return items
except:
pass