當我在 LLDB 中遇到斷點時,我想執行多個自動單步執行程式的命令。
示例(這應該改變程式以跳過由 foo::bar 進行的第一次呼叫):
breakpoint set --method foo::bar --command s --command 'thread return'
當我嘗試上面的例子時:
- 我確實遇到了斷點
s被執行- 但是隨后列印了以下內容:
error: Aborting reading of commands after command #1: 's' continued the target.并且thread return不執行
uj5u.com熱心網友回復:
lldb 執行與 gdb 不同的“程式化步驟”。在 lldb 中,如果您想執行“步驟,檢查某事,再次執行”型別的操作,您可以通過使用與內置 lldb step/next/etc 相同的功能實作自己版本的 step 命令來實作操作。然后將它添加為 lldb step 命令旁邊的新命令,并像呼叫內置 step 命令一樣呼叫它。您甚至可以在每次呼叫時向它傳遞引數,并在您的步驟中使用它們。多個這樣的操作一次可以飛行,它們也自然嵌套。
以下是腳本化步驟的詳細資訊:
https://lldb.llvm.org/use/python-reference.html#using-the-python-api-to-create-custom-stepping-logic
在您的情況下,您將使用花哨的步驟作為斷點命令中的最終操作。
lldb 的斷點回呼在導致目標按設計運行的第一個命令上停止。它不需要支持這種復雜性,因為用戶可以使用腳本步驟做同樣的事情,所以它借此機會不這樣做。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/395370.html
下一篇:自定義Vue
