2012-08-09 21 views
7

私はあるブレークポイントにいるときにスタックトレースを取得する方法を探しています。これは可能ですか?理想的には、アプリケーションをクラッシュさせたり、コードを修正する必要はありません。私はAndroidのデバッガで遊んでみましたが、何か非常に有用なものを見つけることができませんでした。オンデマンドでスタックトレースを印刷する方法はありますか?

理由は、アプリケーションがコード内にどのように到着したかがわからないことがあるため、メソッド呼び出しをトレースするのに役立つ他の提案が公開されています。

答えて

12

これは、Javaで行うことができますEclipseで

new Throwable().printStackTrace(); 

、あなたがDebug視点のExpressionsビューにそのコードを持つ「表現」を作成した場合、それは現在のスタックトレースを出力します(のスタックトレースすなわち、あなたのコードが停止したブレークポイント)をConsoleビューに表示します。

+0

ありがとうございます。表現の表示はどういう意味ですか?どのコードをブレークポイントの行に挿入すればいいですか?私は試しましたが、コンソールビューやLogCatには何も表示されませんでした。 – JohnEye

+0

"式"ビューで、 "新しい式を追加"をクリックし、提供したコードを貼り付けます( 'new Throwable()。printStackTrace();')。 Enterを押してください。 "コンソール"ビューに切り替えると、スタックトレースが表示されます。 これはvanilla Eclipse Junoの 'main(String [])'メソッドを使って単純なJavaアプリケーションをデバッグするときに動作します。 – npe

+0

ああ、確かに私はちょうど密集していました:-)あなたが投稿したコードを実行させたいと思っていたはずです。ありがとう、魅力のように動作します。 – JohnEye

4
Log.e("AppName", "Debug exception", new Exception()); 
2

最も簡単な方法は例外をスローし、すぐにキャッチしてprintStackTrace()を使用することです。

また、printStackTrace()というテキスト表現以外にも、他に何かしたい場合は、StackTraceElement[]を入力すると、Thread.currentThread().getStackTrace()を試すことができます。

+2

あなたはそれを投げる必要はありません。私の答えを参照してください;-) – npe

+0

本当に、私はいつもそれを忘れています:D – f1sh