I am debugging with Android Studio (A.S) 1.0.2 with compileSdkVersion 21 set up in build.gradle. When using an emulator with API 21 everything works fine. The problem occurs
Change temporary the folder name of source files in the SDK. For example you compiled against API level 23 but the device you're testing and debugging is API level 15. Then first compile and run it in debug mode, set a breakpoint. After that switch the names :
$SDK_HOME$/sources/android-23/ -> $SDK_HOME$/sources/android-23-temp/
$SDK_HOME$/sources/android-15/ -> $SDK_HOME$/sources/android-23/
And when this is done then it is a good time to hit your breakpoint.
This solution is assuming that you've installed both API level sources from SDK manager.