C/C++ のプログラムを Xcode でデバッグしているとき、時々ブレークポイントで止まってからステップ実行がうまくいかないことがある。step
とか next
で1行だけ実行しようとしても、そのまま止まらずに continue
と同じ動作になってしまったり、全然とんちんかんなところで止まったりする。stepi
でもだめ。advance N
はうまくいったりいかなかったり。C++ から C 関数を呼び出したときに起きやすいようだが、いまいち規則性がつかめていない。その関数から C 関数を呼び出しているとき、その関数の中でブレークポイントで止めた後 finish
で元の関数に戻ると、その後は step
も next
も正しく動作する(ことが多い。確実に動作するかどうかは自信なし)。Xcode だけでなく、ターミナルから gdb XXXX.app
で走らせても同じなので、gdb の問題らしい。gdb と C++ は相性がよくないという話も聞くけど、デバッガが思うように動かないのはすごくストレスがたまるんだよなあ。
タグ: