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