一个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 操作系统么??我无语了!!!
...全文
528 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
这个很正常,这只是小虫子,比这个大的虫有的是呀
一条晚起的虫 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后才出来的
加载更多回复(6)

16,548

社区成员

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

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

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