それで、本当にブードゥーなバグ(もちろん、#include
関連する場所にバグを追加することで解決されました)に対処した1週間後、デバッガーを常に信頼する必要はなく、何かが意味をなさない場合は良いことに気づきました。古いprintf()
ものはあなたに役立つかもしれません。私が知っていたことから、コードがリリースモードでコンパイルされている場合、デバッガーは「嘘をつく」可能性があります。私は最近、クラスに がある場合#ifdef
、次のようなことを学びました
struct MyStruct
{
char a;
#ifdef USE_ME
double c;
#else
int c;
#endif
};
は、USE_ME
構造体定義に表示されるヘッダーで定義されていませんが、デバッガーが混乱するよりも他の場所で定義されています。これは、デバッグモードであっても、型 c が何であるかがわからず、「嘘をつく」ためです。私の質問は次のとおりです。デバッガーがいつ嘘をつくかについて、他の状況を誰か教えてもらえますか?