For debugging server side code, this book contains a whole chapter, that is, Chapter 7, Debugging and Automated Testing. For the client side part, you'll get a kick start in this recipe.
This recipe doesn't really rely on specific code, but if you want to be able to reproduce exactly what's going on, grab the previous recipe's code.
What makes debugging client side script hard is that the web client heavily relies on jQuery's asynchronous events. Given that breakpoints halt execution, the chance is high that a bug caused by timing issues will not occur when debugging. We'll discuss some strategies for this later: