对 OJ 程序走向有疑问的同学可以使用单步调试和断点调试功能,了解程序的走向。
方法如下:
第一步,输入你的程序,在你程序的声明语句之后(如果 C99 允许在main 函数的第一行),加上“freopen("in.txt","r",stdin);”,并在对应in.txt 中输入你的测试输入,这样你就不必和输入搅在一起,更专心地调试程序了。
![b82dc172f475894ea5d38872e0542a65.png](https://i-blog.csdnimg.cn/blog_migrate/3a5ffac85504e7a4f132ba94c2c6e88a.jpeg)
第二步,设置断点,在freopen 这一行按下鼠标左键或者按下F4 设置断点。同时,右上角的编译选项应改为64bit。
![f845f81e052cc47c71587930335a26f3.png](https://i-blog.csdnimg.cn/blog_migrate/b5ed813ac61838cc453c2f0d2c87e0ac.png)
注意:32bit模式也可以,但一定要是Debug,不是Release 或者其它。
第三步,编译并以调试模式运行程序。先按下F9 编译程序,再按F5 调试程序。
第四步,实施调试。蓝色语句是断点所在位置,也就是程序运行到这一行之上一行。单击左下角工具箱中的按钮,可以分别实施操作。例如单击“下一步”按钮,可以看下一步程序执行的是哪一条语句。
![19024a0d7a13e606a7782a54ab23a7e9.png](https://i-blog.csdnimg.cn/blog_migrate/57147ef8a8bae65d582731d2f794c0d5.jpeg)
如果你要查看变量的值,可以将鼠标停靠在其上方查看。
![a14f33eea555540c5727df06aec445db.png](https://i-blog.csdnimg.cn/blog_migrate/691320cd6bea3e119d1c7416bb04eee3.png)
或者发送命令到 GDB。例如输入:p i 并回车(意思为print i 的值)右下角窗口第一行即出现0(意思是i 为0)。