一个VC下的超级大Bug

blackfishion 2004-12-06 01:36:44
一个VC下的超级大Bug:

在XP 下,VC++不能查看函数静态变量的值,即1. 不能在鼠标指向它时显示该值;2. 不能在Quck Watch 里显示;
3. 不能在Watch 里显示!!!
如果把该变量放到 Watch 下看,就会出现Symbol "xxx" not found!!!

测试方法特别简单:
1. 新建一个最简单的Dialog 工程
2. 加入一个按钮
3. 加入如下代码
void CTempDlg::OnButton1()
{
static int num = 100;

num += 100;
}
4. 在这个函数里设一个断点。
5. 然后调试运行,你会发现,你没有办法查看num 的值,当然除非你把它TRACE 出来,或者让另外一个局部变量的值等

于num,然后查看该局部变量的值。


注意:这种情况仅在XP 下出现,在Win2000不会出现这种情况。



天啊。。大家想想,Win2000, WinXP, VC++ 都是Microsoft 钦定的产品,居然还能出现这么大的Bug,我想问,
微软的测试人员都是干什么吃的!
难道用了用VC 编程,我就要放弃一直用了这么久的XP 操作系统么??我无语了!!!
...全文
490 点赞 收藏 26
写回复
26 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
echoxue 2004-12-08
up
回复
kisser1 2004-12-07
是否太过义气用事呢?
我们能否怪微软呢?vc 6.0 只不过是一个编程用的IDE而已,如果你真的会
用vc了,那么,我想你也应该知道该怎么去定制vc了,不是吧?如果说vc中的调
试器在xp下有问题,那么你完全可以把softice来当作vc 的调试器呀,用被公
认为最好的调试器,你总该会满意吧?
如果你真正弄懂了该怎么去用vc,那么,我想您也应该有能力去帮微软做做
好事了.把这个问题给修复了,你好,我好,他好,大家好,不是最好吗?我们都是
中国人,不要对微软寄有太多的依赖...他为我们已经做了很多了...
试编一下以下代码:

#include <iostream.h>

using namespace std;

int main()
{
static int a = 100;
int b;

b = a;

cout << "b = " << b;
cout << "a = " << a;

return 0;

}

能否通过编译?出了什么错?这要不要怪微软呢?他怎么就不为C语言的广大使
用者着想一下呢?是不是?

//////////////////////////////////////////////////////////////////
//
// i am sorry!我说话可能会有点不合口味,请多多指教...
//
//////////////////////////////////////////////////////////////////
回复
shanhujiao_2000 2004-12-07
哎!没办法。
回复
hjunxu 2004-12-07
这算是个BUG吧,不过和XP或NT没有关系,人家VC也不容易。
楼主,我想你从新启动一下就可以了吧。
回复
learn100 2004-12-07
所以有个便桶(变通)的法子:
看EAX的值。
回复
learn100 2004-12-07
//将num设成局部变量后,能查看其值
101: int num = 100;
0040188D mov dword ptr [ebp-8],64h
102: num += 100;
00401894 mov eax,dword ptr [ebp-8]
00401897 add eax,64h
0040189A mov dword ptr [ebp-8],eax

//将num设成静态局部变量后,不能查看其值
101: static int num = 100;
102: num += 100;
0040188D mov eax,[THIS_FILE+20h (00416660)]
00401892 add eax,64h
00401895 mov [THIS_FILE+20h (00416660)],eax

//将num设成全局变量(包括静态全局变量)后,能查看其值
104: num += 100;
0040188D mov eax,[num (00416660)]
00401892 add eax,64h
00401895 mov [num (00416660)],eax

//我们注意到,其实第二种和第三种情况下num的地址是相同的,但是表现形式却不同。
回复
jzp1567 2004-12-07
这个很正常,这只是小虫子,比这个大的虫有的是呀
回复
没注意过,试试
回复
wyh2002 2004-12-07
我在2000server里也遇到过,原因不明
回复
whwjn 2004-12-07
xp从来不用,只用win2000server,xp太花哨占资源,2000稳定性能好
回复
zhuyie 2004-12-06
VC6比XP早出来n多年,有这样已经不错啦,至少我用过的IDE中还是VC6最顺手,比BCB,DevC++稳定得多。
回复
UDX协议 2004-12-06
vc6+sp6
回复
blackfishion 2004-12-06
呵呵。我在实验室试的。试过好几台机器,都有这个问题,
只是大家一般都不太注意这个而已:)
确实是Bug
回复
同桌老王 2004-12-06
我用vc6+sp6
回复
同桌老王 2004-12-06
我靠,果真如此
回复
HanZhu1 2004-12-06
呵呵。。。。。。。。。。
回复
Falconking 2004-12-06
这问题我也见过
回复
pomelowu 2004-12-06
楼上,我遇到过,在NT下,绝大多数工程能正常调试,但是遇到几个工程,就是如楼主所说,无论如何都跟踪不了……
回复
双杯献酒 2004-12-06
是不是你的杀毒软件把num禁止了?
关掉杀毒软件再试一下看看。
回复
FlyYang 2004-12-06
打个VC补丁试一下
不知道你用的是不适6.0的,如果是
怎么能说微软的测试人员都是干什么吃的!
因为XP在VC后才出来的
回复
加载更多回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-12-06 01:36
社区公告

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