質問: 自分が書いたコードをデバッグで実行のステップを確認したいので、 ブレークポイントを張って、ステップイン、ステップオーバーを実行してみたが、 ある関数が終わるまで実行すると、つぎの関数に移る前に、 以下のようにエラーが出てきます。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/ed92c4c5c6a19b2413fafacf36e8a6e9.png) 図に書かれてあるapp.cppは自分の記憶ではそのようなファイル書いてないです、 継承もしてないと思いますので、どこからのapp.cppなのでしょうか? また、このコードはleapmotionとcinderを使っています。
回答: 例えばこういったことではないでしょうか ``` void foo() { A a; // Aはapp.cpp内にデストラクターの実装が定義されているクラス ... } ``` fooの実行を完了するとき(fooのスコープから抜けるとき)にAクラスのインスタンスaは破棄されるのでデストラクターが呼び出されます。ステップ実行などではAのデストラクターの動きもデバッグできるようになっているはずですがライブラリーのソースを自動取得する設定にしていないとこうした「隠れた」動きについてはご質問のようなメッセージが出たりしますね。 上記のようなパターン以外にもデストラクターなどの「直接ソース上に見えない動き」がありますが、言語仕様をよく考えれば「どのようなメソッドが動いているはずか」を推測できる場合もあります。 言語仕様から直接想像できないような「ランタイムの実装の都合で呼び出される低水準ルーチン」だったりすると推測は困難かも知れません。自分はそういうとき「なんかそれっぽいのが動いてる」ぐらいしか気にしません...