如何为比赛创造良好的调试问题?

GG.*_*GG. 4 c c++ debugging

我参加了比赛,有一次我们有调试问题.我必须在C和C++中设计一些非常好的调试问题.

如何在调试时创建一些好问题?在设计问题时我应该考虑哪些方面?

Vil*_*lx- 8

我的头脑风暴会议:

微妙的内存泄漏总是很好.与类,构造函数,复制构造函数和析构函数混淆,您应该能够轻松地创建难以发现的问题.

阵列循环的一次性错误也是经典的.

然后,您可以通过玩物的名称来简单地弄乱读者的思想.创建具有微妙的不同名称,用随机(AND略有不同)的名称变量等变量,然后让他们尝试和发现一个地方,你已经混了lengthlenght.不要忘记套管差异.

调用约定也可能被滥用来创建细微的错误(比如反转参数的顺序).

另外,让我们不要忘记从棘手的预处理器定义和模板中获得无穷无尽的乐趣(你知道C++模板应该是Turing-complete吗?)Metaprogramming bug应该是有趣的.

想到的下一个想法是提供正确的程序,但输入数据有缺陷(当然是巧妙的).然后程序将因缺少错误检查而失败,但是在人们意识到他们在错误的地方寻找问题之前将会有一段时间.

竞争条件通常难以重现和修复,尝试使用多线程.

通过临时检查很容易错过下溢/溢流.

最后,但并非最不重要 - 如果你是一名程序员,试着记住你花了两周时间解决的最后一个大问题.如果您不是计算机程序员,请尝试查找并询问他们.我是一名.NET程序员,所以不幸的是,我的经验与你对C/C++的要求关系不大.


Joh*_*ing 5

对于一些简单的"查找此源代码中的错误"练习,请查看PC-lint的月份存档错误.