debug 和release
Debug有调试 且因为有调试的东西文件较大 无优化 ; release无调试 文件较小 且系统自动优化较多 (下面有解释)
常用调试键
F11如果碰到函数,则是进入函数内部去调试 F10如碰到函数会直接跳过 不进入函数
对于断点 若在循环里面且没有限制 那就会存在多个断点 若加限制条件则不会出现上述情况
调试
调试可以用监控和内存去看本质上的问题
出现的特殊bug
在栈区 内存的使用是谁先创造谁的内存就最高 越晚创造的就越低 (默认是这样 但是也可能会与其相反,在不同环境中其使用效果不一样 ) 而该题巧妙地利用了内存的问题制造出了bug 使越界的数组和i共用一个内存 从而死循环打印hehe,系统由于死循环而无法报错(关于数组越界) 如果把i的创建放在数组后面 则不会出现该情况 其就会报错(系统有时间进行报错),会打印13个hehe 。如果不是该环境也不会出现该情况 因为每个环境的空出的空间不一样
上述讲到release会对代码进行优化 如debug版本出现死循环 则到release版本则会对该代码进行优化 使i内存位置在数组下面 从而不会出现bug 对其优化 这就是release的优化 而debug不会对代码有任何优化
监控的数组特殊情况
在主函数内只要输入arr就能看到数组中所有值的情况 而到了其他函数内arr只能代表第一个值 比如一维数组中其只能代表第一个值 如果要代表所有值则要写arr,n(数组含有的值的数量)。比如二维数组则arr代表二维数组第一排 若要展现出所有值则要arr,n(数组中的所有行)
关于为什么要这么写现在我所学知识太少不能够深入 等以后学得多了就能了解清楚(现在没必要理解)
写代码时出现的错误分类
一般是语法出现问题 如上
一般指没有引用正确,导致链接错误 不能运行 如上
能运行 但结果跟我们想要的结果不一样 这时候需要调试去找出问题所在