0

これまでのところ、デバッグを使用するのは、例外が発生した行とメンバーの値を知ることだけです。このようなオブジェクトを監視することの用途がわかりません:

Name Variable
objA 0x10cf990

カーソルが行に到達する前であっても、objA にはガベージ値が含まれています。値が読めない場合はどうなりますか? また、オブジェクトのデータを表示する方法はありますか?

例えば、

class A{
  name = "im a";

  String getName(){
     return name;
  }
}

main(){
   A* objA = new A(); //breakpoint here
}

デバッグ時に、objA のメンバーの値と関数の戻り値を確認できますか?

お気に入り

Name Variable
objA 0x10cf990
--name im a
--getName() im a

私は以前にこのようなことを試みたことがあると思います。私はちょっと確信が持てません。

システム: Linux Mint 15 64bit IDE: Kdevelop4 (デバッガーは GDB だと思います)

4

1 に答える 1

0

objAまだ初期化されていないため、最初はガベージ値が表示されます。この行をまたぐと、有効な値に変わります。

A* objA = new A();

新しい有効な値もゴミに見えるかもしれませんがobjA、これは A へのポインターであることを忘れないでください。したがって、ゴミのような値は実際には有効なメモリ アドレスです。

デバッグ時に、objA のメンバーの値と関数の戻り値を確認できますか?

[ウォッチ] ウィンドウを展開objAして、そのメンバーの値を表示できるようになりnameました (この場合)。nameobjA が初期化される前に値を確認できる場合がありますが、これもガベージ値になることに注意してください。

KDevelop が監視機能をサポートしているかどうかはわかりません。ただし、これは Visual C++ で行うことができます。関数の戻り値を監視するには、ウォッチ ウィンドウに関数呼び出しを追加します。次に例を示します。

objA->getName()

[ウォッチ] ウィンドウで関数を見るときは注意してください。関数がデータを変更すると、副作用が発生して混乱する可能性があります。

于 2013-09-22T09:11:17.300 に答える