forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user