You can use
to attach a debugger (Visual Studio) instead of attaching the timer job in VS.
Also i tend to use DebugView alot to just write out asserts or messages like
Another tip for testing is to encapsulate the logic in its own class. Then you can test (and unit test) the code first in for example a console application. Then you wont have to wait for timer job to execute etc.
Creating, Deploying and Debugging Custom Timer Jobs