簡體   English   中英

lldb 腳本:如何從文字地址獲取 lldb.SBValue

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM