我有以下内容:
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(strlen(pText)), GL_UNSIGNED_BYTE, pText); }
我可以在FuncA的任何地方点击断点.如果我尝试进入FuncB,它会跳过.它将接受FuncB中的断点,但永远不会命中它.我知道它正在执行FuncB,因为我可以在FuncB中放入一个MessagBox()调用并获取消息框.
在远离广泛的VC6使用几年后,我是VS2005的新手.我记得VC6时代的这种情况,如果没有符号信息.但是,在这种情况下,两个函数都在同一个文件中,因此符号信息必须正确.同样在那种情况下,我认为你甚至无法设置断点.
我尝试过所有愚蠢的伏都教,就像重建整个解决方案一样.
我忽略了什么愚蠢的事情?
编辑:添加了FuncB的代码,以回应关于它可能基本上是内联的评论.(这只是来自MSDN的wglUseFontBitmaps的确切示例代码[此处为减号]).我不知道内联是如何妨碍逐步完成每次通话的.
确保禁用所有编译器优化(/ Od).编译器优化可能会导致调试器断点出现问题.