Свойство registers
в SBFrames - это SBValueList
, в котором хранятся наборы регистров (GPR и т. Д.).Каждый набор регистров является SBValue, а отдельные регистры представлены как дочерние элементы набора регистров, причем дочернее имя является именем регистра.x1
- это GPR, а GPR всегда являются первым регистром, установленным в registers
.SBValueList
также GetFirstValueByName
, чтобы получить элемент по имени, так что вы также можете найти «Регистр общего назначения» программно.
Таким образом, вы бы сделали что-то вроде:
error = lldb.SBError()
did_change = lldb.frame.registers[0].GetChildMemberWithName('x1').SetValueFromCString("0x12345",error)
SetValueFromCString
возвращает True
, если ему удалось изменить значение, и если это не так, причина будетхранятся в параметре error
.
Обратите внимание, что энергозависимые регистры, такие как x1
, не сохраняются при вызове функций, поэтому вы можете получить доступ или изменить их значения только в текущем фрейме.
SBValues описаны здесь:
https://lldb.llvm.org/python_reference/lldb.SBValue-class.html
, если вы хотите знать, что еще вы можете с ними сделать.