2011-07-21 16 views
0

私はデバッグをしていて、変数の値が変わる場所をチェックしたいと思っていました。このためwatch 'structure-> somefunc.getvalue()'のようにウォッチポイントを設定しようとしました。単純な変数ではありません(おそらく関数を呼び出す大きな構造体の一部です)。私はこれをgdbで行うと、現在のコンテキストでシンボル 'structure-> somefunc ..'は表示されません。同じディレクトリにgrepを実行すると、同じ表現の-4インスタンス。私は何かを欠いている?GDBでウォッチポイントを設定できません

答えて

1

何か不足していますか?

はい、あなたは物事の少なくともいくつ欠落しているように見える:

  • 表現structure->somefunc.getvalue()がどの 意味がありません。おそらく、その式が有効であるために、あなたはsome_variableが存在する状況でなければなりません

  • some_variable->some_field.getvalue()を意味しました。 some_variablegrepの出力に現れるということは、GDBがの場合、現在と評価することはできません。あなたが正しい文脈でプログラムを停止すると、を評価することができるかもしれません。

  • 戻り値がgetvalue()の場合、ウォッチポイントを設定することは意味がありません(不可能です)。ウォッチポイントは、のメモリの場所を指定することができます。 getvalue()this->m_valueのようなものを返す場合、本当に望むものは、*(&some_variable->some_field.m_value)にウォッチポイントを設定することです。

関連する問題