簡體   English   中英

僅在Xcode / LLDB中為某些線程設置條件斷點

[英]Set conditional breakpoint for certain thread only in Xcode/LLDB

我正在使用一些GCD代碼,該代碼調度一堆類似的異步塊。 我想通過逐步調試這些塊之一來調試它,因此我在該塊頂部附近的某個地方設置了一個斷點,但是每次提交新塊時調試器都會命中該斷點,因此我從不設法通過塊,我只是在同一行的不同線程之間交換。

我的問題是如何設置斷點,使其以某個線程為條件? 即它應該僅在線程4上執行時才觸發?

編輯

我應該補充一點,我的塊的代碼非常耗時,因此調度程序可以在執行該塊中的下一行之前交換到另一個線程上,並且另一個新調度的GCD塊輪到它觸發相同的斷點。

我不認為這是通過Xcode Breakpoints UI公開的,但是在lldb中,您可以修改斷點,以便僅在(1)線程名稱匹配,(2)分派隊列名稱匹配,(3)線程ID匹配或(4)線程索引號匹配。 您可以在創建斷點( breakpoint set )時指定這些條件,也可以通過breakpoint modify斷點將這些條件添加到現有斷點。 請參閱調試器控制台窗口中的help breakpoint modify以獲取允許的參數列表。

要調試GDC代碼,可以使用$ gdb invoke-block

為了有更好的主意。

  1. 區塊和主要中央調度指南(以及Cocoa API的使用指南)

  2. 使用GDB進行調試

還有應該如何使用dispatch_debug? 已經在那里指導。

暫無
暫無

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

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