I recently ran into an issue where I was unable to set a breakpoint on a custom application page I had developed, thus making it really difficult to track down errors. Typically, these pages are stored in the 12 hive in the layouts directory. Debugging them is usually hit and miss for me, sometimes it works and other times I get the generic breakpoint could not be hit, symbols could not be loaded error.
I did a bit of research and found a great article by Sowmyan on his blog. Check it out here. To summarize, you need to make sure that in the web.config for your SharePoint app, you have the compilation tag debug property set to true.
<compilation batch="false" debug="true">
This worked great for me. However, I did so a big of digging to determine what exactly is the impact of changing this to true. I found a great article that summarizes it here. The bottom line is that you may want to consider switching it back to false once your app has been built, tested and is ready for production usage.