我想在gdb斷點上設置一個條件,只有當某個函數名稱出現在回溯中時纔會中斷。什麼是最好的方法來做到這一點?GDB如果幀在回溯中斷
11
A
回答
2
我不確定如何完全按照您的要求進行操作,但是如果您有權訪問相關函數的源代碼,則可能的解決方法是在函數的開頭將一些全局布爾變量設置爲true
,並在函數退出之前將其設置爲false
。然後,您可以設置條件斷點(使用condition
命令)僅在此布爾變量爲true
時停止。
+0
這就是我最終做的,但我很想知道如何不用重新編譯就可以做到。 – Chazz 2010-11-15 06:02:37
3
比Python腳本更簡單的解決方案是使用temporary breakpoint。
它看起來像這樣:
b ParentFunction
command 1
tb FunctionImInterestedIn
c
end
每次你在ParentFunction
休息時間,你會設定一個一次性斷點功能,你真正感興趣的,然後繼續運行(大概直到你打該斷點)。
既然你打破FunctionImInterestedIn
只有一次,這是不行的,如果FunctionImInterestedIn
中的ParentFunction
情況下多次調用,並要在每次調用中斷。
0
替代rix0rrr的回答是:
b main
commands
set $inParentFunction = 0
c
end
b ParentFunction
commands
set $inParentFunction = 1
c
end
b FunctionImInterestedIn if ($inParentFunction)
相關問題
- 1. 0x2e2e2e2e在GDB回溯?
- 2. 解釋gdb回溯
- 3. GDB - 在回溯中禁用源視圖
- 4. gdb奇怪的回溯
- 5. GDB回溯子進程
- 6. GDB回溯變量的值
- 7. GDB不返回有用的回溯
- 8. GDB不顯示完整回溯
- 9. 回溯日誌中的堆棧幀NULL
- 10. 在圖中回溯
- 11. 如何從跟蹤點獲取堆棧回溯? (GDB)
- 12. 在gdb回溯PHP-FPM不明來電者
- 13. GDB回溯消息「??()中的0x0000000000000000」是什麼意思?
- 14. 在回溯中跳過最裏面的幀
- 15. 如果gdb已連接,我該如何中斷?如果不是,請繼續?
- 16. GDB回溯告訴我符號名稱,但不是源文件
- 17. GDB回溯不顯示正確的信息
- 18. 附加GDB調試器並記錄回溯
- 19. 自動化gdb:每10毫秒顯示一次回溯
- 20. ??在OpenMP的回溯
- 21. 在斷言線上打印回溯「結束」,在Python3 unittest addFailure
- 22. 如何讓GDB在GLib斷言失敗時中斷?
- 23. 在功能返回的GDB中設置斷點
- 24. gdb掛鉤設置中斷
- 25. GDB:斷點沒有命中
- 26. gdb輸入後中斷
- 27. 中斷主要問題GDB
- 28. 如何跳轉到gdb中的斷點?
- 29. 從回溯中切斷來自特定庫的步驟
- 30. GDB在對象函數調用中斷
的[?有什麼辦法來設置一個斷點,在gdb是在調用堆棧條件(可能的複製http://stackoverflow.com/questions/5336403/is-there-any-way-to-set-a-breakpoint-in-gdb-that-is-conditional-on-the-call-stac) – 2016-12-30 12:32:01