vs2012 调试时看不到变量的内容

iridescent 2014-09-29 03:08:29
我的vs2012在打开后第二次调试时看不到string等类型变量的内容,刚打开vs第一次调试时一切正常,不知道为什么,请问有哪位兄弟也遇到我这样的问题怎么解决的,谢谢。
第一次调试可以看到字符串的内容

第二次就看不到了
...全文
11691 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
wh_ 2017-06-23
  • 打赏
  • 举报
回复
我怎么看像是空字符串?
qq_21371463 2017-06-20
  • 打赏
  • 举报
回复
楼主可能是你的文件保存的编码格式有问题。有可能是你的cpp文件里混杂了gb2312和Unicode编码 用notepad++什么的吧你的文件考过去 改为ANSI编码 再拷贝回来试试。可能会有帮助。
赵4老师 2017-03-02
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhao4zhong1/article/details/53078924 老司机找bug的十年心路历程
aps__aps 2017-03-01
  • 打赏
  • 举报
回复
一堆吃瓜群众
FD_2013 2017-02-21
  • 打赏
  • 举报
回复
强迫症,能看就行了,vs助手问题
CT8100 2017-02-21
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
楼主早晚会“皈依我佛”的。
同意4爷的看法~无论些什么程序,存点日志总是好的,首先可以让自己的调理清晰,第二点,万一人不在现场,直接打开日志开关也可以知道程序的问题发生到哪一步。 楼主可以监听一下这些变量看看,之前因为自己的插件问题导致无法显示对应的数值,但是监听应该是可以看到的~
qq_37601165 2017-02-21
  • 打赏
  • 举报
回复
楼主问题解决了吗
赵4老师 2017-01-11
  • 打赏
  • 举报
回复
很多时候,使用的工具越先进,人越笨;得到得越轻松,人越懒。
赵4老师 2017-01-11
  • 打赏
  • 举报
回复
求人不如求己。
AngryLittleSnail 2017-01-11
  • 打赏
  • 举报
回复
引用 11 楼 u011418173 的回复:
在工程上右键,打开属性页,配置属性——C/C++——优化,将优化改为“已禁用/Od”,再试试,你可能会有意想不到的惊喜~
没有用啊
qilimi-1 2016-06-27
  • 打赏
  • 举报
回复
11楼的方法有用。。。。
赵4老师 2015-11-24
  • 打赏
  • 举报
回复
十字链表交换任意两个节点C源代码(C指针应用终极挑战)http://download.csdn.net/detail/zhao4zhong1/5532495
paschen 2015-11-24
  • 打赏
  • 举报
回复
看你字符串长度,太长可能就显示 ... 了?
konnn 2015-11-24
  • 打赏
  • 举报
回复 1
在工程上右键,打开属性页,配置属性——C/C++——优化,将优化改为“已禁用/Od”,再试试,你可能会有意想不到的惊喜~
赵4老师 2014-09-29
  • 打赏
  • 举报
回复
楼主早晚会“皈依我佛”的。
iridescent 2014-09-29
  • 打赏
  • 举报
回复
引用 7 楼 jikexiyg 的回复:
添加到监控窗口看啊

试过了的,添加监视也很不直观,vector、map之类的还是没法看。
下边是个vector,展开好几层才能看到第一个记录的值,其他的看不到。
iridescent 2014-09-29
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
不要依赖IDE显示变量值的功能。自己在需要调试的地方输出变量值到屏幕或日志文件。 参考下面:
//带表头结点的单向链表
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
struct NODE {
    int          data;
    struct NODE *next;
} H,*head,*p,*q,*s1,*s2,*s3,*s4,*s;
int i,j,k,n,t,m;
int main() {
    srand(time(NULL));

    //填写头节点数据
    H.data=-1;
    H.next=NULL;
    head=&H;

    //创建10个节点的单链表
    p=head;
    for (i=0;i<10;i++) {
        q=(struct NODE *)malloc(sizeof(struct NODE));
        if (NULL==q) return 1;
        q->data=rand()%100;//填写0..99的随机值
        q->next=NULL;
        p->next=q;
        p=q;
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //将值为5的结点插入到单链表的第k个结点前
    k=3;
    n=0;
    p=head;
    while (1) {
        if (NULL==p) {
            break;
        }
        n++;
        if (k==n) {
            q=(struct NODE *)malloc(sizeof(struct NODE));
            if (NULL==q) return 1;
            q->data=5;
            q->next=p->next;
            p->next=q;
            break;
        }
        p=p->next;
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //删除第k个节点
    k=5;
    n=0;
    p=head;
    while (1) {
        if (NULL==p) {
            break;
        }
        n++;
        if (k==n) {
            q=p->next;
            if (q) {
                p->next=q->next;
                free(q);
            }
            break;
        }
        p=p->next;
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //从小到大排序
    for (p=head;p!=NULL && p->next!=NULL;p=p->next) {
        for (q=p->next;q!=NULL && q->next!=NULL;q=q->next) {
            if (p->next->data > q->next->data) {

                //交换data
//              printf("swap %02d %02d\n",p->next->data,q->next->data);
//              t=p->next->data;p->next->data=q->next->data;q->next->data=t;

                //或者

                //交换next
//              printf("swap %02d %02d\n",p->next->data,q->next->data);
                s1=p->next;
                s2=p->next->next;
                s3=q->next;
                s4=q->next->next;

                if (s2!=s3) {
                     p->next=s3;
                    s3->next=s2;
                     q->next=s1;
                    s1->next=s4;
                } else {
                     p->next=s3;
                    s3->next=s1;
                           q=s3;
                    s1->next=s4;
                }

                //输出整个单链表
//              s=head->next;
//              while (1) {
//                  if (NULL==s) {
//                      printf("\n");
//                      break;
//                  }
//                  printf("%02d->",s->data);
//                  s=s->next;
//              }
//              getchar();
            }
        }
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //将单链表中前 m 个结点和后 n 个结点进行互换,m+n为链表总长10
    m=4;
    n=6;
    k=0;
    p=head;
    while (1) {
        if (NULL==p) {
            break;
        }
        k++;
        if (m+1==k) {
            q=p;
        }
        s=p;
        p=p->next;
    }
    s1=head->next;
    head->next=q->next;
    s->next=s1;
    q->next=NULL;

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //释放所有节点
    p=head->next;
    while (1) {
        if (NULL==p) {
            break;
        }
        q=p->next;
        free(p);
        p=q;
    }

    return 0;
}
//18->94->58->17->27->20->43->57->75->78->
//18->94->05->58->17->27->20->43->57->75->78->
//18->94->05->58->27->20->43->57->75->78->
//05->18->20->27->43->57->58->75->78->94->
//43->57->58->75->78->94->05->18->20->27->
//
c/c++不像脚本语言,编译一次很慢的,调试过程中发现需要跟踪的变量时,再写打印日志代码,再编译是件挺烦的事,我这不光是string,还有vector、map都看不到,如果每个都写日志打印出来确实太麻烦了。
sunShinezhuyg 2014-09-29
  • 打赏
  • 举报
回复
添加到监控窗口看啊
赵4老师 2014-09-29
  • 打赏
  • 举报
回复
不要依赖IDE显示变量值的功能。自己在需要调试的地方输出变量值到屏幕或日志文件。 参考下面:
//带表头结点的单向链表
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <time.h>
struct NODE {
    int          data;
    struct NODE *next;
} H,*head,*p,*q,*s1,*s2,*s3,*s4,*s;
int i,j,k,n,t,m;
int main() {
    srand(time(NULL));

    //填写头节点数据
    H.data=-1;
    H.next=NULL;
    head=&H;

    //创建10个节点的单链表
    p=head;
    for (i=0;i<10;i++) {
        q=(struct NODE *)malloc(sizeof(struct NODE));
        if (NULL==q) return 1;
        q->data=rand()%100;//填写0..99的随机值
        q->next=NULL;
        p->next=q;
        p=q;
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //将值为5的结点插入到单链表的第k个结点前
    k=3;
    n=0;
    p=head;
    while (1) {
        if (NULL==p) {
            break;
        }
        n++;
        if (k==n) {
            q=(struct NODE *)malloc(sizeof(struct NODE));
            if (NULL==q) return 1;
            q->data=5;
            q->next=p->next;
            p->next=q;
            break;
        }
        p=p->next;
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //删除第k个节点
    k=5;
    n=0;
    p=head;
    while (1) {
        if (NULL==p) {
            break;
        }
        n++;
        if (k==n) {
            q=p->next;
            if (q) {
                p->next=q->next;
                free(q);
            }
            break;
        }
        p=p->next;
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //从小到大排序
    for (p=head;p!=NULL && p->next!=NULL;p=p->next) {
        for (q=p->next;q!=NULL && q->next!=NULL;q=q->next) {
            if (p->next->data > q->next->data) {

                //交换data
//              printf("swap %02d %02d\n",p->next->data,q->next->data);
//              t=p->next->data;p->next->data=q->next->data;q->next->data=t;

                //或者

                //交换next
//              printf("swap %02d %02d\n",p->next->data,q->next->data);
                s1=p->next;
                s2=p->next->next;
                s3=q->next;
                s4=q->next->next;

                if (s2!=s3) {
                     p->next=s3;
                    s3->next=s2;
                     q->next=s1;
                    s1->next=s4;
                } else {
                     p->next=s3;
                    s3->next=s1;
                           q=s3;
                    s1->next=s4;
                }

                //输出整个单链表
//              s=head->next;
//              while (1) {
//                  if (NULL==s) {
//                      printf("\n");
//                      break;
//                  }
//                  printf("%02d->",s->data);
//                  s=s->next;
//              }
//              getchar();
            }
        }
    }

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //将单链表中前 m 个结点和后 n 个结点进行互换,m+n为链表总长10
    m=4;
    n=6;
    k=0;
    p=head;
    while (1) {
        if (NULL==p) {
            break;
        }
        k++;
        if (m+1==k) {
            q=p;
        }
        s=p;
        p=p->next;
    }
    s1=head->next;
    head->next=q->next;
    s->next=s1;
    q->next=NULL;

    //输出整个单链表
    s=head->next;
    while (1) {
        if (NULL==s) {
            printf("\n");
            break;
        }
        printf("%02d->",s->data);
        s=s->next;
    }

    //释放所有节点
    p=head->next;
    while (1) {
        if (NULL==p) {
            break;
        }
        q=p->next;
        free(p);
        p=q;
    }

    return 0;
}
//18->94->58->17->27->20->43->57->75->78->
//18->94->05->58->17->27->20->43->57->75->78->
//18->94->05->58->27->20->43->57->75->78->
//05->18->20->27->43->57->58->75->78->94->
//43->57->58->75->78->94->05->18->20->27->
//
iridescent 2014-09-29
  • 打赏
  • 举报
回复
引用 2 楼 tixisong 的回复:
debug有 release没有
就是debug模式下,没有release
加载更多回复(4)

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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