学号 2019-2020-1 《数据结构与面向对象程序设计》实验一报告
课程:《程序设计与数据结构》
班级: 1823
姓名: 张子正
学号:20182304
实验教师:王志强
实验日期:2019年9月9日
必修/选修: 必修
1.实验内容
• 基于命令行和IDE(Intellj IDEA 简易教程](http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑、编译、运行和调试。(本次实验主要使用命令行的方式)
• 练习Linux基本命令;
• 学习Java程序的JDB调试技能:https://www.cnblogs.com/rocedu/p/6371262.html
• 编写简单的Java程序。
2. 实验过程及结果
-
1.编写一个java测试程序
-
2.编译运行
javac -g -d bin src/HelloJDB.java
-
3.单步调试 先输入:
jdb -classpath .:./bin HelloJDB
设置断点:stop in HelloJDB.main
然后使用run运行, list打出运行到程序哪一步, next运行下一步
3. 实验过程中遇到的问题和解决过程
-
问题1:jdb找不到.java文件,list无结果
-
问题1解决方案:把src中的.java文件复制一份到bin中,就可以显示list的表。但我没有弄懂原理,我们其实可以直接使用
use
命令如use ./src
指出源代码位置 -
问题2:无法调试
-
问题2解决方案:一定要按指定方法编译,注意 -g -d 必须要加
-
问题3:调试中next与step有什么区别,stop in与stop at 有什么区别
-
问题3解决方案:step会进入方法体,即进入调用的类。next则会把方法执行完,所以一般单步调试时next效率更高。
stop in 用来设置方法断点,stop at用来设置行断点,方法断点一般在main()处,我们可以用stop at HelloJDB:12
在12行设置行断点,运行cont一下子循环进行完并停在12行。
其他(感悟、思考等)
- 要搞清楚目录的从属关系,打开正确的目录运行程序
- 注意不要将指令输错,即使有细微的错误程序也无法正常执行