We have seen how to use the debugger to verify the execution flow of a program (using the step operations) and to inspect variables. You can also use the debugger to know what the status of the running program is. For example, a web request is taking too long and you want to know where exactly the execution is stuck. You can use the debugger to find this. It is similar to taking the thread dump of a running program, but is much easier than the methods used to get the thread dump. Let's assume that our CourseDAO.getCourses method is taking a long time to execute. Let's simulate this by using a couple of Thread.sleep calls, as shown in the following code snippet:
public List<Course> getCourses () throws SQLException { //get connection from connection pool Connection con =
DatabaseConnectionFactory...