A software watchpoint is implemented by single-stepping the program and checking the variable's value every time control returns to the debugger. This is extremely slow, since it involves multiple context switches for every instruction executed in the program under test.