0

デバッグセッションをより効率的にしようとしています。式の結果を暗黙のローカルとして表示する方法はありますか?

この不自然な例では、cs.method2() が何を評価したかを知りたいと思います。コードを 1 行も書いたり、そのメソッドにステップインしたりする必要はありません。

bool myObject::isEmpty(double d)
{
     bool res;
     custString cs(d);

     // bool dresult = cs.method2();
     res = !cs.method1().empty() && cs.method2();

     return res; //set break here.
}

method2 は深いチェーンであり、結果のみに関心があるため、ステップインしたくありませんが、それは常に次のような return に渡されます

return _mycs_string(_dat);

そのため、同じパターンを持つ可能性のあるその呼び出しにずっと足を踏み入れる必要があります。

また、これは変更するつもりのないライブラリであるため、行を分割するコードを記述する必要はありません。

ありがとう。

4

1 に答える 1

0

私のアドバイスは、前の行で cs.method2() の結果を明示的に設定して、ここにあるのと同じようにコードを書くことです。

この提案の理由は、コンパイラ開発者が関数から戻る前に「不要な」ローカル変数を最適化できることを強く信じているからです。

(ここにあるコードのコンパイラからの結果コードを見ることができます。それがあなたの「res」変数で何をするかを見てください)

もう 1 つの可能性は、 cs.method2() 呼び出しから戻ったときに (デバッガーで) スタックを監視することです。そこに戻り値が格納されます。

于 2013-04-08T20:11:36.257 に答える