Make Your Question About a Concrete Problem
Reference questions can generate good answers, but to make them good questions they should address either a concrete example or a narrow class of problems. Your question currently reads:
When my Android app fails to run as expected, how do I figure out what causes the problem?
There's really no such thing as a perfect checklist or tools list for debugging. At best, you can apply a general methodology to a concrete problem, and perhaps leverage specific tools to provide a solution.
You can improve the question greatly by devising a concrete problem where some methodology and tool-chain will prove useful in providing a solution. Presumably you have personally faced some issue that exemplifies the usefulness of your chosen solution; go with that, as long as it isn't too contrived.
Ask "How" Instead of Polling
When you ask questions like:
What tools are available for specifically debugging Android apps?
you are intrinsically asking for a shopping list. That is, by definition, a question that begs to be marked as Not Constructive. However, asking questions like "How can I debug an Android App that automatically sends out pictures of my cat whenever I press the menu button?" at least has some scope to it, and gives you a concrete problem to address.
Personally, I'd remove the tools sentence altogether to avoid making your question a polling question. The question should instead focus on defining a concrete problem, and any parameters that might limit the solution. As an off-the-cuff example, you might ask:
How can I gather a stack trace for an Android App that has closed without a user-visible error dialog?
Now at least your question is focused on finding solutions for a specific class of problem (e.g. gathering a stack trace) under some subset of possible circumstances (in this case, when the close dialog isn't intrinsically useful). Obviously, the more detailed your sample scenario, the better your question will be, but IMHO this is at least a start in the right direction.