![](/img/trans.png)
[英]Dereferencing a SBValue which is of type void * in lldb Python script
[英]lldb script: How to get lldb.SBValue from literal address
給定一個 memory 地址,我想從 lldb 腳本打印它的內容。
我嘗試了不同的方法來獲取給定地址的 SBValue,但它們都不適合我,即
buffer = lldb.SBData()
buffer.CreateDataFromCString(lldb.eByteOrderBig, 10, "0x00007fffe45e3000")
但是當我 go 查詢 object 時沒有顯示。
我還嘗試將地址分配給lldb中的便利變量,然后使用FindVariable(),但該變量為空
expr auto $buffer = function_returning_address();
>>> buffer = lldb.frame.FindVariable("$buffer")
但是這里的變量又沒有名稱、類型等。我也嘗試使用 SBValue.SetValueFromCString()
>>> buffer.SetValueFromCString("0x00007fffe45e3000", error)
False
>>> print error
error: Could not get value: No value
我在 Google 上沒有找到太多文檔,而且我剛開始使用 lldb 腳本,歡迎提出任何建議。
謝謝。
有兩種方法可以做到這一點。 如果您想要原始數據,您可以要求您的 SBProcess 使用 SBProcess.ReadMemory 將 memory 作為 Python 字節數組讀取。 如果您想將該地址處的數據顯示為某種類型的實例,您可以使用 SBTarget.CreateValueFromAddress。 要找到傳遞給它的類型,請使用 SBTarget.FindFirstType...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.