虫虫的世界真的很奇妙。这几天闲来无聊,就把我调试过的BUG写出来,一来和大家分享一些故事,提供一些解决思路。二来也是想总结一下虫虫的一些规律,看看能否系统地进行调试。

1+1 怎么会不等于2呢?

这次遇到的问题就是这样,我在跟踪界面上一个错误。这个错误是这样发生的,当一个子窗体关闭的时候,原先的一个Grid中的数据就报错了。很奇怪吧。

我采用了常规的调试方法,在报异常的地方设下断点,看看到底什么地方执行错了。可是已经入调试堆栈,就发现傻眼了,怎么明明是A结果的代码,变量查看器,却显示了另外一个结果。

我说,完了,编译器出问题了。于是重启IDE。还是不行,再重启电脑。也不行!

这怎么办呢?

我告诉大家一个好办法。就是找一个同事,给他讲一遍这个故事。然后你就容易有灵感了。

灵感不一定来源于你的同事,灵感往往是你已经钻进牛角尖了,出来就能看见灵感了。找你的同时,非常有助于你跳出来。

我跳出来后,得到的灵感就是:

调试器没有错,肯定是对象被释放了!不然不会有这么莫名其妙的事情发生。

方向对了,方法就简单了,只要跟踪子窗体弹出前后,对象的释放是否正确即可。也可以在怀疑对象的Destroy中设下断点,看看什么时候被释放了。

最后发现是下面这样一段代码的常用法的变种,导致了不该释放的对象被释放了。

with TSubForm.Create(nil) do

try

/// some code here

finally

Free; /// 注意这里的Free。因为是with下的,所以是针对SubForm的。

end;

但有时会一不小心,写出了下面的:

oSubForm := TSubForm.Create(nil);

try

/// some code hiere

finally

Free; /// 注意这里的Free。因为不在with下的,所以是针对方法的对象的,也就是Self(C#中是this)。

end;

好了,知道问题在哪里,解决BUG就简单多了。

捉虫记之三:1+1 ≠ 2相关推荐

  1. Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画

    Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画 引子 这段时间一直努力在把早期版本的拇指接龙游戏(Cocos2d-x 2.2.3+CocoStud ...

  2. vc2010 std::tr1 bind库捉虫记

    前两天发现了VC2010 tr1库中bind实现的一个bug,当时只是作了记录,没有详细分析.但作为一个QA,不找出问题所在实在不算称职,于是就有了这篇捉虫记. 闲言少叙,书归正传,tr1库就不多作介 ...

  3. 捉虫记---查看变量,整数转浮点

    /** dot.cpp** Created on: 2014年12月31日* Author: judyge*/#include<stdio.h> #include<stdlib.h& ...

  4. 捉虫记 C++转java Java中equals和==的区别

    java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号( ...

  5. 捉虫记 单步跟踪 条件断点 变量查看实践

    图结构 C++转java int Locate_Vex(String v) { for(int i=0;i<vexnum;i++) { if(xlist[i].data==v){return i ...

  6. 捉虫记 NullPointerException

    C++ 十字链表存储图变为 java版 修改到没有一个语法错误 运行出现BUG 输入第二个时 NullPointerException 空指针错误 添加 public VexNode[] xlist= ...

  7. System.Linq捉虫记 | 论变量命名的重要性

    前言 下面这段代码,你能发现什么问题吗? List<int> a = new List<int>{ 1, 2, 3, 4, 5 };var last2 = a.TakeLast ...

  8. Python捉虫记(持续更新)

    路径问题 这是玄学,不是问题.遇到了请绝对路径改相对路径,相对路径改绝对路径,并祈祷有效. Import import pyx pyx文件的import需要Cython库的支持,因此要先装Cython ...

  9. 众测 Nebula Graph | 捉虫计划已开启,这项有礼

    Nebulan Graph 捉虫计划 是开源的分布式图数据库 -- Nebula 发起的「找 Bug」活动,旨在发动开源社区的力量共建图数据库 Nebula. Nebula Graph:一个开源的分布 ...

最新文章

  1. 快速开发rails、==常用插件==
  2. nginx FastCGI错误Primary script unknown解决办法
  3. linux关闭在线登录用户
  4. C#类与结构体究竟谁快——各种函数调用模式速度评测
  5. LeetCode 234 Palindrome Linked List
  6. Mysql存储过程老是报错_mysql中看看这个存储过程老是报错,该如何处理
  7. centos6.5编译安装mysql_Centos6.5编译安装mysql 5.7.14详细教程
  8. messageutil.java_java socket 怎么给websocket发信息
  9. 基地保留节目--塔防游戏
  10. 北理珠大学生体质测试及健康状况的分析
  11. FPS游戏通用自瞄实现
  12. 锂电池健康状态估计(一)
  13. hihoder 1048
  14. 百度AI车牌识别测试
  15. win10内存占用率过高怎么办_Win10系统硬盘占用率100%各种卡死怎么办?
  16. 词性标注:基于MaxEnt的中文词性标注模型实现
  17. dreamweaver CC 快捷键
  18. 【计算机网络】数据链路层 : 后退 N 帧协议 GBN ( 滑动窗口 | 发送窗口长度 | “发送方“ 累计确认、超时机制 | “接收方“ 按序接收、确认帧发送机制 | 计算示例 )★
  19. 2021牛客多校#4 E-Tree Xor
  20. Pyspark Python worker exited unexpectedly (crashed) java.io.EOFException

热门文章

  1. Linux下rm删除文件后,磁盘容量没有释放
  2. 《Java-SE-第二十四章》之线程间协作
  3. java年轻代频繁gc_JVM 年轻代 老年代 持久代 gc
  4. 数据结构-数组(Array)
  5. JS实现导出网页表格为Excel
  6. 机器学习模型应用以及模型优化的一些思路
  7. 第2关 什么是质心 (educoder
  8. 面试官:我们天天用注解,那你知道注解的实现原理吗?
  9. Visio画任意曲线
  10. 爱用计算机的我作文,我爱电脑编程作文