1.2.1 Eclipse动态调试
在Eclipse中一般通过以下几种方式进行断点设置:
(1)在行号处双击左键可以添加,也可以删除断点。
(2)在行号处右键选择“Toggle Breakpoint”,也可以添加或者删除断点。
通过上文讲到的连接Oracle数据库的程序进行动态调试的演示,比如我们想对第39行拼接的SQL语句进行动态调试,如图1-33所示。
图1-33 选择需要断点的语句
在动态调试前先要设置断点,在39行处双击鼠标左键,多了一个小点,就说明设置好了断点,如图1-34所示。
图1-34 设置断点
设置完成断点后,单击调试按钮进行调试,如图1-35所示。
开发工具首次调试时会弹出提示,需要切换到Debug工作区,勾选“Remember my decision”选项,下次便不再提示。进入调试模式后会出现如图1-36所示的界面,需要关注以下4个窗口。
图1-35 单击调试按钮进行调试
窗口一:Debug窗口,Tomcat中有线程池,Debug窗口显示当前线程方法调用栈及方法执行到第几行,目前显示调试的是index.jsp文件的第39行。
窗口二:代码编辑窗口,显示调试代码运行的进度状态,目前显示的39行是绿色的颜色,说明正运行在第39行。
窗口三:Variables窗口显示当前方法的局部变量、非静态的变量等,可以修改变量值,目前id参数的值是null。
窗口四:Console控制台,用于查看打印的日志信息。
图1-36 四个窗口的界面
下面重点看一下窗口三的功能,窗口三可以查看变量的值又可以修改变量的值,还是以刚才的示例来看,默认id参数是要通过GET方法进行提交的,但是通过此方法debug不能通过“http://127.0.0.1/index.jsp?id=1”的方式直接进行变量提交,却可以通过Variables窗口进行修改给id变量赋值,将id的值赋值为1,一步一步运行调试后发现:数据库查询完成后p的值为1,n的值为user1,s的值为pass1,如图1-37所示。
图1-37 调试中对应变量的值
从上面的过程来看,Eclipse对Java Web程序调试还是比较麻烦的,目前代码审计用得比较多的是IDEA,下面讲解如何使用IDEA进行Java Web程序的调试。