私は次のものを持っています:
classA::FuncA()
{
... code
FuncB();
... code
}
classA::FuncB(const char *pText)
{
SelectObject(m_hDC, GetStockObject ( SYSTEM_FONT));
wglUseFontBitmaps(m_hDC, 0, 255, 1000);
glListBase(1000);
glCallLists(static_cast<GLsizei>(strlen(pText)), GL_UNSIGNED_BYTE, pText);
}
FuncA のどこでもブレークポイントをヒットできます。FuncB にステップ インしようとすると、ステップ オーバーします。FuncB のブレークポイントを受け入れますが、ヒットすることはありません。FuncB に MessagBox() 呼び出しを配置してメッセージ ボックスを取得できるため、FuncB を実行していることがわかります。
私は、VC6 の大規模な使用から数年離れた後、VS2005 を初めて使用します。VC6 時代から思い出すこのような状況の 1 つは、シンボル情報が利用できない場合です。ただし、この場合、両方の関数が同じファイルにあるため、シンボル情報が正しい必要があります。また、その場合、ブレークポイントを設定することさえできなかったと思います。
ソリューション全体を再構築するなど、ばかげたブードゥーをすべて試しました。
私が見落としている愚かなことは何ですか?
編集: 基本的にインライン化可能である可能性があるというコメントに対応して、FuncB のコードを追加しました。(これは、wglUseFontBitmaps の MSDN からの正確なサンプル コードです [ここにコメントを差し引いたものです])。インライン化が各呼び出しのステップ実行をどのように妨げるかわかりません。