0

私はデバッグを行っており、変数の値が変化する場所を確認したかったのです。このために、単純な変数ではない watch 'structure->somefunc.getvalue()' のようなことを言ってウォッチポイントを設定しようとしました (おそらくいくつかの関数を呼び出す大きな構造の一部) .これを行うと、現在のコンテキストで gdb に No symbol 'structure->somefunc ..' と表示されます。同じディレクトリで grep を実行すると、同じ式の 3-4 インスタンスが取得されます。私は何かを逃していますか?

4

1 に答える 1

1

私は何かを逃していますか?

はい、少なくともいくつかの点が欠けているようです。

  • この表現structure->somefunc.getvalue()は意味がありません。あなたはおそらく意味しましたsome_variable->some_field.getvalue()

  • その式が有効であるためには、が存在するコンテキストにいる必要some_variableがあります。some_variable出力に表示されるという事実は、GDBが現在それを評価grepできることを意味するものではありません。正しいコンテキストでプログラムを停止すると、それを評価できる場合があります。

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

于 2011-07-21T02:54:18.677 に答える