Когда я отлаживаю TimerJobs, я вставляю Assertion в самом первом начале метода Execute, который всегда будет неудачным. Это приводит к появлению всплывающего окна при каждом вызове метода Execute, поэтому вы можете быть уверены, что TimerJob был запущен и у вас достаточно времени для подключения отладчика. Конечно, вы должны удалить Утверждение, прежде чем начать работу.
System.Diagnostics.Trace.Assert(false);
Еще одна важная вещь - перезапуск службы таймера после развертывания новой библиотеки DLL. В противном случае служба таймера запустит TimerJob из старой библиотеки DLL.