2016-11-15 7 views
3

高頻度のタイマーまたはセンサーの値をデバッグするには、x回だけ起動するブレークポイントを設定すると便利です。これを達成する最良の方法は何ですか?10回ごとにLLDBブレークポイントが起動するように設定するにはどうすればよいですか?

Xcodeで "x回前に無視する"オプションを試しましたが、これは初めての動作です。 LLDBコマンドを使用してこのカウンタをリセットできますか?

答えて

1

BrCounter.freq--; 
if(BrCounter.freq == 0){ 
    BrCounter.freq = 10; 
    return true; 
}else{ 
    return false; 
} 

Onelinerをブレークポイントw hichは "ignore count"を満たしていないため、ヒットするとはみなされないので、breakpointコマンドは実行されません。あなたは、あなたが自動的にブレークポイントをヒットするごとに10回目を停止したい場合には、これだけの操作を行います。

(lldb) break set -l 10 -i 10 -N my_bkpt 
    Breakpoint 1: where = foo`main + 46 at foo.c:10, address = 0x0000000100000f5e 
    (lldb) break com add 
    Enter your debugger command(s). Type 'DONE' to end. 
    > break modify -i 10 my_bkpt 
    > DONE 
    (lldb) 

は、それからちょうどヒット各停留所で「継続」とあなたは10回おきにブレークポイントにヒットします。

注:ブレークポイントに名前を付ける機能(-Nオプション)を使用して、追加したブレークポイントコマンドのブレークポイント番号を知る必要はありませんでした。これらのブレークポイントをコマンドファイルなどに保存する場合は便利です。

+1

Xcodeのブレークポイントエディタでブレークポイントコマンドとして「ブレーク変更」行を追加することで同じことができます。その場合、Xcodeはまだブレークポイントの命名をサポートしていないので、ブレークポイント番号を取得する必要があります。 lldbコンソールで "break list"コマンドを実行すると、それを見つけることができます。 –

0

lldbで永続変数(カウンタ)を定義できるかどうかはわかりません。カウンターヘルパーとして使用する1つのグローバル変数を常に持つことができ、単にリリースビルドに含めないでください。

class BrCounter{ 
    static var freq = 10 
} 

編集ブレークポイントと次の条件を追加します

(lldb) break modify -i <NEW_VALUE> <BKPT_SPECIFICATION> 

:あなたがしていつでも無視するカウンタをリセットすることができ

BrCounter.freq--; if(BrCounter.freq == 0){ BrCounter.freq = 10; return true; }else{ return false; } 
関連する問題