关闭VS2012调试时单步非常卡

xiaohuh421 2014-12-11 10:24:27
有时候使用VS2008或者 VS2012调试代码的时候, 发现devenv.exe进程占用CPU达40%.
并且按一次F10单步, 哪个怕是步过if(a==0)这样的简单判断条语句都需要10多秒, 在这个过程中查看CPU, 发现devenv.exe占用CPU达30-40. 步过后CPU恢复正常, 继续F10, 再高CPU占用......

win7 安全关闭安全软件 有VAX插件

请问大家是否遇到过此问题? 如何解决?
...全文
1143 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
humanster123 2017-08-06
  • 打赏
  • 举报
回复
这个“在源中显示线程”选项在那里啊,能不能给个截图,找了好久没找到!
you都是我的 2017-01-12
  • 打赏
  • 举报
回复
确是和楼主所说的那个玩意儿有关 我今天也遇到了 一不小心开启了 结果。。。
qq_33872589 2016-01-28
  • 打赏
  • 举报
回复
楼主的方法很有效,昨天刚好开启了这个选项,今天卡死了
赵4老师 2014-12-17
  • 打赏
  • 举报
回复
引用 15 楼 xiaohuh421 的回复:
[quote=引用 14 楼 jennyvenus 的回复:] 这类问题俺一般尝试重装系统,请原谅俺就是这么棒槌。
小事重启, 大事重装. [/quote] 小错重来 大错投胎再活过!
xiaohuh421 2014-12-17
  • 打赏
  • 举报
回复
也没人遇到得, 结帖了. 反正是恢复了. 最终结果是; 似乎跟: 调试选项中的---在源中显示线程 有点关系.
xiaohuh421 2014-12-15
  • 打赏
  • 举报
回复
引用 14 楼 jennyvenus 的回复:
这类问题俺一般尝试重装系统,请原谅俺就是这么棒槌。
小事重启, 大事重装.
用户 昵称 2014-12-13
  • 打赏
  • 举报
回复
这类问题俺一般尝试重装系统,请原谅俺就是这么棒槌。
shiter 2014-12-13
  • 打赏
  • 举报
回复
把优先级调高点试试?》哦瞎猜的。。。
ojc520520 2014-12-12
  • 打赏
  • 举报
回复
up...
赵4老师 2014-12-12
  • 打赏
  • 举报
回复
引用 10 楼 xiaohuh421 的回复:
调试选项中的---在源中显示线程 (VS2012) 这个是做什么的呢?
引用 7 楼 zhao4zhong1 的回复:
]
不知道。建议在MSDN里面搜。
xiaohuh421 2014-12-12
  • 打赏
  • 举报
回复
调试选项中的---在源中显示线程 (VS2012) 这个是做什么的呢?
引用 7 楼 zhao4zhong1 的回复:
]
xiaohuh421 2014-12-11
  • 打赏
  • 举报
回复
引用 4 楼 lx624909677 的回复:
调试hello world程序也是这么卡?
这到没有试. 但是在单步步过 if(a==10) 这样的简单判断语句都会卡10来秒. 并且这期间CPU会猛增达到30-50, 步过之后,CPU又会恢复到空闲状态, 继续F10, 会继续卡. 总之就是每次F10就会卡10来秒.
信阳毛尖 2014-12-11
  • 打赏
  • 举报
回复
引用 2 楼 xiaohuh421 的回复:
电脑是I5,, DDR3内存8G. 显卡GF620M 写代码应该是无压力的. 我提问后, 经过乱整似乎与 调试选项中的---在源中显示线程 这个项有关 但后面流畅后再加上, 也没有问题了... 实在是搞不懂, 但至少现在流畅了.
引用 1 楼 lx624909677 的回复:
该换电脑了
这个问题应该是软件本身在某些情况下造成运行卡的现象,应该不是普遍性问题吧?
lx624909677 2014-12-11
  • 打赏
  • 举报
回复
调试hello world程序也是这么卡?
lx624909677 2014-12-11
  • 打赏
  • 举报
回复
调试hello world程序也是这么卡?
xiaohuh421 2014-12-11
  • 打赏
  • 举报
回复
电脑是I5,, DDR3内存8G. 显卡GF620M 写代码应该是无压力的. 我提问后, 经过乱整似乎与 调试选项中的---在源中显示线程 这个项有关 但后面流畅后再加上, 也没有问题了... 实在是搞不懂, 但至少现在流畅了.
引用 1 楼 lx624909677 的回复:
该换电脑了
lx624909677 2014-12-11
  • 打赏
  • 举报
回复
该换电脑了
  • 打赏
  • 举报
回复
断网试试,如果断网了不卡,就
modyaj 2014-12-11
  • 打赏
  • 举报
回复
楼主到底对VS做了什么 我怎么不觉得呢 多少有点点卡还是正常的 但是 卡上三秒的我都没遇见过
赵4老师 2014-12-11
  • 打赏
  • 举报
回复
用VC6就不会。 建议楼主换WinDbg调试。 或者彻底摒弃使用单步调试;转而使用写日志调试: 有时不将“调用函数名字+各参数值,进入函数后各参数值,中间变量值,退出函数前准备返回的值,返回函数到调用处后函数名字+各参数值+返回值”这些信息写日志到文件中是无论如何也发现不了问题在哪里的,包括捕获各种异常、写日志到屏幕、单步或设断点或生成core文件、……这些方法都不行! 写日志到文件参考下面:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef WIN32
    #include <windows.h>
    #include <io.h>
#else
    #include <unistd.h>
    #include <sys/time.h>
    #include <pthread.h>
    #define  CRITICAL_SECTION   pthread_mutex_t
    #define  _vsnprintf         vsnprintf
#endif
//Log{
#define MAXLOGSIZE 20000000
#define MAXLINSIZE 16000
#include <time.h>
#include <sys/timeb.h>
#include <stdarg.h>
char logfilename1[]="MyLog1.log";
char logfilename2[]="MyLog2.log";
static char logstr[MAXLINSIZE+1];
char datestr[16];
char timestr[16];
char mss[4];
CRITICAL_SECTION cs_log;
FILE *flog;
#ifdef WIN32
void Lock(CRITICAL_SECTION *l) {
    EnterCriticalSection(l);
}
void Unlock(CRITICAL_SECTION *l) {
    LeaveCriticalSection(l);
}
#else
void Lock(CRITICAL_SECTION *l) {
    pthread_mutex_lock(l);
}
void Unlock(CRITICAL_SECTION *l) {
    pthread_mutex_unlock(l);
}
#endif
void LogV(const char *pszFmt,va_list argp) {
    struct tm *now;
    struct timeb tb;

    if (NULL==pszFmt||0==pszFmt[0]) return;
    _vsnprintf(logstr,MAXLINSIZE,pszFmt,argp);
    ftime(&tb);
    now=localtime(&tb.time);
    sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);
    sprintf(timestr,"%02d:%02d:%02d",now->tm_hour     ,now->tm_min  ,now->tm_sec );
    sprintf(mss,"%03d",tb.millitm);
    printf("%s %s.%s %s",datestr,timestr,mss,logstr);
    flog=fopen(logfilename1,"a");
    if (NULL!=flog) {
        fprintf(flog,"%s %s.%s %s",datestr,timestr,mss,logstr);
        if (ftell(flog)>MAXLOGSIZE) {
            fclose(flog);
            if (rename(logfilename1,logfilename2)) {
                remove(logfilename2);
                rename(logfilename1,logfilename2);
            }
        } else {
            fclose(flog);
        }
    }
}
void Log(const char *pszFmt,...) {
    va_list argp;

    Lock(&cs_log);
    va_start(argp,pszFmt);
    LogV(pszFmt,argp);
    va_end(argp);
    Unlock(&cs_log);
}
//Log}
int main(int argc,char * argv[]) {
    int i;
#ifdef WIN32
    InitializeCriticalSection(&cs_log);
#else
    pthread_mutex_init(&cs_log,NULL);
#endif
    for (i=0;i<10000;i++) {
        Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);
    }
#ifdef WIN32
    DeleteCriticalSection(&cs_log);
#else
    pthread_mutex_destroy(&cs_log);
#endif
    return 0;
}
//1-78行添加到你带main的.c或.cpp的那个文件的最前面
//81-85行添加到你的main函数开头
//89-93行添加到你的main函数结束前
//在要写LOG的地方仿照第87行的写法写LOG到文件MyLog1.log中

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧