调试程序
一、通读查看
通读代码,检查各部分的实现是否与自己的算法相同,检查各部分的逻辑是否正确,即这么做是否能得到正确答案。
- 条件:通用
二、输出过程变量
即看与自己的期望结果是否一致,如果不一致,则逆向追根溯源,找到第一个出现问题的地方。
- 条件:有小样例
三、对拍
即不断地与有正确性的程序运行相同的输入,看他们给的输出是否一致,同时也可以为【输出过程变量】的调试方法提供小样例
-
条件:容易造数据,有唯一解,或很简单就可以写spj
-
注意:data.cpp不能写错了,另一个程序一定是正确的。
四、构造数据
构造一些特殊的数据、意想不到的情况,使得程序很有可能是错误的,并让程序可能是错误的。自己卡自己,而不是让出题人卡自己。
- 条件:只能是小样例
五、断言过程
不仅要保证答案正确,还要保证整个过程都在掌控之中,结合assert
,使得过程的条件与你的预期一致。
-
好处:可以避免本质错误但小样例、随机数据下正确的情况(拍不出来)。
-
条件:通用
六、gdb查RE
借助 MinGW 工具 gdb 进行程序运行过程的跟踪。首先需要在 C++ 编译环境中打开产生调试信息。
路径:"C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\gdb.exe"
常用命令:
-
run/r
运行程序kill
结束程序 -
backtrace
跟踪程序 -
b 行号/函数名
在相应位置加上断点。 -
print/p 变量
输出变量的值 -
c/conti/continue
跳过断点,继续运行 -
d 要删除的断点编号
直接delete
删除所有断点。
参考:GDB调试指南
标签:正确,程序,gdb,调试程序,小样,断点 From: https://www.cnblogs.com/lupengheyyds/p/18411779