ウォッチポイントは、メモリ内のアドレスへの書き込みを追跡するために使用されます (デフォルトの動作)。オブジェクトがメモリ内のどこにあるか (オブジェクトへのポインタがある) を知っていて、関心のあるオブジェクトへのオフセットを知っている場合、それがウォッチポイントの目的です。たとえば、単純な C の例では、次の場合:
struct info
{
int a;
int b;
int c;
};
int main()
{
struct info variable = {5, 10, 20};
variable.a += 5; // put a breakpoint on this line, run to the breakpoint
variable.b += 5;
variable.c += 5;
return variable.a + variable.b + variable.c;
}
のブレークポイントに到達したら、次のvariable.a
ようにします。
(lldb) wa se va variable.c
(lldb) continue
また、プログラムがvariable.c
変更されると一時停止します。(私は、完全な "watch set variable" コマンドをわざわざ入力しませんでした)。
たとえば、のような複雑なオブジェクトではNSMutableDictionary
、ウォッチポイントが必要なことを行うとは思いません。NSMutableDictionary
ウォッチポイントを設定するメモリの単語 (または複数の単語) を知るには、オブジェクト レイアウトの実装の詳細を知る必要があります。