数据录入网站开发,网站开发课程设计总结,天津网站制作企业,wordpress主题二级菜单栏调试复杂系统时#xff0c;最大的难点在于定位问题#xff0c;如果弄清楚了问题产生的机理#xff0c;那么就能有针对性的进行解决。
调试复杂系统时#xff0c;遇到不好定位的问题#xff0c;就要大胆去猜、去怀疑、去假设#xff0c;尤其是应该重点怀疑多线程访问最大的难点在于定位问题如果弄清楚了问题产生的机理那么就能有针对性的进行解决。
调试复杂系统时遇到不好定位的问题就要大胆去猜、去怀疑、去假设尤其是应该重点怀疑多线程访问读或写共享变量的逻辑是否正确比如系统中某个变量的值在时序上只能出现0, 1, 0, 1, 0, 1的变化情况并且任何 1, 1或 0, 0的变化序列都会导致出现问题那么我们应该想方设法去测试这个变量在系统运行的过程中是否出现了不符合预期的变化序列以此作为解决问题的突破口。
验证某个假设是否成立的任务可以交给 assert()函数来实现它能够在出现某种不符合预期的情况时终止程序的运行这样我们就能更加靠近问题出现的第一现场。在 C/C里面assert()函数的定义如下
#include assert.hvoid assert(scalar expression);例如我们可以这样来用 assert()去保证程序在关键节点时的运行结果是正确的
#include stdio.h
#include assert.hint accumulate(int a, int b) {int sum 0;for (int i a; i b; i)sum i;return sum;
}int main(void) {int ret accumulate(0, 100);if (ret ! 5050) {printf(ret %d\n, ret);assert(ret 5050 The result of accumulation from 0 to 100 is wrong!);}return 0;
}