是的,非常奇怪,我重装过了,依然无法进入也不知道是微软bug,还是我自己工程的问题 

解决方案 »

  1.   

    进SDK目录看看源码是否存在,调试文件是否存在,在VS安装目录下vc/atlmfc,看看下面的src目录下是否有源码,lib目录下是否有.pdb的调试的东西
      

  2.   

    先看看你的工程是否是Debug模式?
      

  3.   

    一般不会直接在消息循环的函数中下断点,因为鼠标在窗口上动一下就产生几十个消息,太乱了。要调试的话也是写个if语句,判断下是不是自己关心、想要的消息,然后if中再下断点。无法进入调试是什么情况,显示什么?显示没有找到源码,是否查看反汇编?
    我在VS2008下也从来没有遇到过此问题,不太清楚。把VS先卸载再安装看看,别点修复安装。实在不行的话重装系统再装VS肯定能解决问题。
      

  4.   

    有时就发生项目没法调试的状况,不知道什么原因。
    可以 工具->选项->调试->常规,取消“要求源文件与原始版本完全一致”。大都能解决,啥原因造成的没功夫去研究。
      

  5.   

    是不是你没生成调试信息 项目属性 Linker->Debugging->Generate Debug Info 设置为 Yes (/DEBUG) 
      

  6.   

    一般不会直接在消息循环的函数中下断点,因为鼠标在窗口上动一下就产生几十个消息,太乱了。要调试的话也是写个if语句,判断下是不是自己关心、想要的消息,然后if中再下断点。
    你说的 if语句,是指,可否提供一个范本。多谢
      

  7.   


    lib下,是否完全不得而知一直有个苦逼的问题:库的源码,比如mfc, c++ 的, 似乎不是只读属性了。一般库源码,会有个 “锁的图标”, 我这个没有。不知道为什么
      

  8.   


    BOOL CListCtrlApp::PreTranslateMessage(MSG* pMsg)
    {
    if (pMsg->message == WM_LBUTTONDOWN)
    { } return CWinApp::PreTranslateMessage(pMsg);
    }
    比如重写虚函数CWinApp::PreTranslateMessage
    if语句只关心WM_LBUTTONDOWN消息
      

  9.   

    windows每个进程都有自己的消息队列,被中断后当前进程挂起。不会你说的冲突 
    调试如果要涉及到界面操作,可以用trace输出调试信息
      

  10.   


    我随便举个例子,你敢说不冲突吗?我晕。比如 wm_erasebkgnd, wm_paint ,wm_lbuttondown等消息处理函数。你设置断点后, 然后, 按f5试试。肯定会发现一个奇怪的现象:有的消息处理函数,反复进入,可以说,死活在里执行,根本不会跳转到其他函数里面。原因是: 你在按键盘的同时, 产生了很多消息,比如界面被最小化到了任务栏里。 再一个例子:有人调试消息循环,会发现,  run那里也是会反复的执行, 无法跳转到其他地方的。第3个例子:有时候进入了Cwnd::default 这个函数,像这些代码,都是难以调试的。
      

  11.   


    我晕,咋没关系啊,? 我举个例子: wm_erasebkgnd 会执行多次, 但是次数总归是有限的吧?但是你要谁在这个处理函数里设置断点,不断的 按f5, 你说会怎么样?
    程序永远在执行 wm_erasebkgnd。  因为在调试状态下,不断的发出这个消息,所以总是在不断的执行。但是在非调试状态下, 次数是有限的。这也是我的问题所在。我是问:对于gui这块调试,  由于你在调试,会导致不断的产生一些消息,来干扰你。 让你没法子正确的分析程序的执行走向。比如wm_erasebkgnd, wm_ctlcolor,wm_paint的先后顺序。
    大家有没有什么好的调试经验呢?我是通过 trace函数来打印程序执行走向的但是毕竟它不是万能的。  要分析mfc的源码,似乎不行。 只能简单的分析自己写的程序。
      

  12.   


    我晕,咋没关系啊,? 我举个例子: wm_erasebkgnd 会执行多次, 但是次数总归是有限的吧?但是你要谁在这个处理函数里设置断点,不断的 按f5, 你说会怎么样?
    程序永远在执行 wm_erasebkgnd。  因为在调试状态下,不断的发出这个消息,所以总是在不断的执行。但是在非调试状态下, 次数是有限的。这也是我的问题所在。我是问:对于gui这块调试,  由于你在调试,会导致不断的产生一些消息,来干扰你。 让你没法子正确的分析程序的执行走向。比如wm_erasebkgnd, wm_ctlcolor,wm_paint的先后顺序。
    大家有没有什么好的调试经验呢?我是通过 trace函数来打印程序执行走向的但是毕竟它不是万能的。  要分析mfc的源码,似乎不行。 只能简单的分析自己写的程序。
    如果这样困扰的话,想想刚有计算机时,人们用纸带,输入程序该是什么情况!
    建议多读书,多谢代码,多看msdn