社区应用 社区服务 会员列表 统计排行 帮助 银行
  • 312阅读
  • 10回复

[BUG测试]请各位帮忙测试看是不是易BUG?

楼层直达
发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
写了近一周的程序,今天突然出现闪退,调试下来发下一个疑似易BUG的问题,已经精简了源码,
程序截图如下:







很简单的代码,也就是很简单的继承关系,但是莫名其妙出现BUG。。。
疑似BUG 易BUG测试.e (3 K) 下载次数:2

发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
只看该作者 沙发  发表于: 01-02
坐等大神
发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
只看该作者 板凳  发表于: 01-02
没人吗
发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
只看该作者 地板  发表于: 01-02
坐等大神
发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
只看该作者 4楼 发表于: 01-02
还是没人吗?
发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
只看该作者 5楼 发表于: 01-03
躺着等~
发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
只看该作者 6楼 发表于: 01-03
站着等
发帖
62
铜币
12
威望
0
E积分
0
技术积分
0
只看该作者 7楼 发表于: 02-26
躺着等
si
发帖
6750
铜币
16206
威望
0
E积分
0
技术积分
0
只看该作者 8楼 发表于: 02-26
今天分析了一下你的代码,发现编译器生成初始化的代码的里,对父类的自定义类型的成员变量offset计算有问题。
这个应该就是问题所在,至于官方修改复不修复,什么时候修复就不知道了。
  1. .版本 2
  2. .子程序 子程序1
  3. .局部变量 子类测试, 子类
  4. 子类测试.测试 ()
  5. ;下面是对应的初始化代码
  6. 002402C4 | 55                 | push ebp
  7. 002402C5 | 8BEC               | mov ebp , esp
  8. 002402C7 | 81EC04000000       | sub esp , 00000004h
  9. 002402CD | 6810000000         | push 00000010h
  10. 002402D2 | E89E010000         | call krnln_malloc
  11. 002402D7 | 83C404             | add esp , 00000004h
  12. 002402DA | 8945FC             | mov dword [ebp-04h] , eax;   子类测试 = 申请内存(16); //方法地址表+爷类.私有成员+父类.rect 大小应该是12,编译器计算成16了;
  13. 002402DD | 8BD8               | mov ebx , eax
  14. 002402DF | C70300000000       | mov dword [ebx] , 00000000h;     子类测试.方法地址表 = 0;
  15. 002402E5 | C7430400000000     | mov dword [ebx+04h] , 00000000h; 子类测试.爷类_私有成员 = 0;
  16. 002402EC | C7430800000000     | mov dword [ebx+08h] , 00000000h; 子类测试.父类_rect = 0;
  17. 002402F3 | C7430C00000000     | mov dword [ebx+0Ch] , 00000000h; //不存在这个成员变量
  18. 002402FA | C703E0002400       | mov dword [ebx] , 002400E0h;     子类测试.方法地址表 = 子类方法地址表;
  19. 00240300 | 53                 | push ebx; ///////////////////////////////////////////////////////////////////////////////////////////
  20. 00240301 | 83C30C             | add ebx , 0000000Ch;             计算 子类测试.父类_rect 的地址,这里应该就是问题所在了。应该是 add ebx, 8;
  21. 00240304 | 53                 | push ebx; ///////////////////////////////////////////////////////////////////////////////////////////
  22. 00240305 | 6810000000         | push 00000010h
  23. 0024030A | E866010000         | call krnln_malloc
  24. 0024030F | 83C404             | add esp , 00000004h
  25. 00240312 | 5B                 | pop ebx
  26. 00240313 | 53                 | push ebx
  27. 00240314 | 8903               | mov dword [ebx] , eax;          子类测试.父类_rect = 申请内存(16);
  28. 00240316 | 8BD8               | mov ebx , eax
  29. 00240318 | C70300000000       | mov dword [ebx] , 00000000h;    子类测试.父类_rect.左边 = 0
  30. 0024031E | C7430400000000     | mov dword [ebx+04h] , 00000000h;子类测试.父类_rect.顶边 = 0
  31. 00240325 | C7430800000000     | mov dword [ebx+08h] , 00000000h;子类测试.父类_rect.右边 = 0
  32. 0024032C | C7430C00000000     | mov dword [ebx+0Ch] , 00000000h;子类测试.父类_rect.底边 = 0
  33. 00240333 | 5B                 | pop ebx
  34. 00240334 | 5B                 | pop ebx

  1. .版本 2
  2. .子程序 子程序1
  3. .局部变量 子类测试, 父类
  4. 子类测试.测试 ()
  5. ;改成父类之后对应的初始化代码
  6. 002402C4 | 55                 | push ebp
  7. 002402C5 | 8BEC               | mov ebp , esp
  8. 002402C7 | 81EC04000000       | sub esp , 00000004h
  9. 002402CD | 680C000000         | push 0000000Ch
  10. 002402D2 | E894010000         | call krnln_malloc
  11. 002402D7 | 83C404             | add esp , 00000004h
  12. 002402DA | 8945FC             | mov dword [ebp-04h] , eax;    子类测试 = 申请内存(12); //方法地址表+爷类.私有成员+父类.rect
  13. 002402DD | 8BD8               | mov ebx , eax
  14. 002402DF | C70300000000       | mov dword [ebx] , 00000000h;     子类测试.方法地址表 = 0;
  15. 002402E5 | C7430400000000     | mov dword [ebx+04h] , 00000000h; 子类测试.爷类_私有成员 = 0;
  16. 002402EC | C7430800000000     | mov dword [ebx+08h] , 00000000h; 子类测试.父类_rect = 0;
  17. 002402F3 | C703E0002400       | mov dword [ebx] , 002400E0h;     子类测试.方法地址表 = 父类方法地址表;
  18. 002402F9 | 53                 | push ebx
  19. 002402FA | 83C308             | add ebx , 00000008h;       计算 子类测试.父类_rect 的地址
  20. 002402FD | 53                 | push ebx
  21. 002402FE | 6810000000         | push 00000010h
  22. 00240303 | E863010000         | call krnln_malloc
  23. 00240308 | 83C404             | add esp , 00000004h
  24. 0024030B | 5B                 | pop ebx
  25. 0024030C | 53                 | push ebx
  26. 0024030D | 8903               | mov dword [ebx] , eax;          子类测试.父类_rect = 申请内存(16);
  27. 0024030F | 8BD8               | mov ebx , eax
  28. 00240311 | C70300000000       | mov dword [ebx] , 00000000h;    子类测试.父类_rect.左边 = 0
  29. 00240317 | C7430400000000     | mov dword [ebx+04h] , 00000000h;子类测试.父类_rect.顶边 = 0
  30. 0024031E | C7430800000000     | mov dword [ebx+08h] , 00000000h;子类测试.父类_rect.右边 = 0
  31. 00240325 | C7430C00000000     | mov dword [ebx+0Ch] , 00000000h;子类测试.父类_rect.底边 = 0
  32. 0024032C | 5B                 | pop ebx
  33. 0024032D | 5B                 | pop ebx


级别: 幼儿园
发帖
15
铜币
0
威望
0
E积分
0
技术积分
0
只看该作者 9楼 发表于: 02-27
?????????????????/
快速回复

限60 字节
批量上传需要先选择文件,再选择上传
 
认证码:
上一个 下一个