簡體   English   中英

從非交互式LLDB會話中提取狀態?

[英]Extract state from non-interactive LLDB session?

是否可以使用LLDB提取C / C ++程序的當前狀態,而無需啟動交互式會話? 我已經看到了有關LLDB API的一些信息,但是我沒有看到有關如何使用它的更多信息,以及它是否可以完成我所尋找的東西。

理想情況下,我將使用Python編寫一些代碼或在我調試的代碼外部的代碼,在這些代碼中,我使用LLDB API獲取有關當前程序的信息,例如當前變量和值,並可以啟動和停止執行。 這(或其子集)可能嗎? 有其他選擇嗎?

這是我想做的一些偽代碼:

state = program.getState()
print state.values
program.next()
newState = state.set("newVariable", 10)
program.setState(newState)
program.continue()

Xcode調試器是使用lldb的API實現的。 Xcode碰巧也提供了lldb命令控制台,但是所有UI命令都是直接使用公共SB API實現的。

因此,當然可以做您想做的事。

這是一個使用SB API驅動程序的示例:

https://github.com/llvm/llvm-project/blob/master/lldb/examples/python/process_events.py

這是獲取所有全局變量及其值的示例:

https://github.com/llvm/llvm-project/blob/master/lldb/examples/python/globals.py

該目錄中還有很多其他示例,它們可能會對您感興趣的部分起作用。如果有任何(出於一定原因)您想使用SB API,但找不到解決方法,請提交錯誤使用http://bugs.llvm.org 目的是SB API提供與LLDB正交的完整接口,該接口與命令解釋器正交。

當然,如果您願意(也可以通過SBCommandInterpreter類),也可以在非交互模式下使用命令解釋器,盡管我不建議您對調試器進行編程,因為這最終會將您的代碼與輸出的具體內容聯系在一起。各種lldb命令,我們不保證將輸出作為API ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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