调试:赛场基础

本教程依据调试:赛场基础—洛咕网校所写而成
填坑!填坑! 今天我们要学习一个如何在比赛上简单地调试

一些错误

脑残错误 ORZ(写给自己看的

  • 将 main 写成 mian
  • 将 namespace 写成 namesapce(打字打快了会乱了顺序)
  • 将 true 写成 ture
  • 将 false 写成 flase ? (没遇到过)
  • 以上为样例, 仅提供检查思路*

浮点数例外

原因: 除数为0
对策: 检查取模与除法

段错误

原因: 爆栈, 访问非法内存
对策: 开栈(‘ulimit –s 233333’), 检查空间复杂度, 检查数据范围, 检查数组大小.

死循环(或者死递归)

原因: 无止境的递归或者是循环条件炸了
对策: 输出中间变量

一些调试技巧

黑盒测试

面对长代码出了问题是, 您一定如丧考妣.
如果一行一行检查, 抱歉,估计一场考试您一道题都写不完, 于是我们就要一种概念: 黑盒测试.
方法:

  1. 在程序的每一函数后放置输出语句, 检测程序运行状况
  2. 将函数分成几节, 在每一节后放置输出语句, 检测程序运行状况
  3. 直至找出错误位置.

代码

#define DEBUG printf("Passing [%s] in LINE %d...\n",__FUNCTION__,__LINE__)

使用

DEBUG;

是不是很简单 :D

调试

占坑后补

Author: Odeinjul
Link: http://odeinjul.ooo/lgpj8-2018.html
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.