web-dev-qa-db-ja.com

アプリケーションが予期せず停止しました:デバッグ方法

件名が「アプリケーションが予期せずに停止しました」という他の多くの質問とは異なり、特定の問題のトラブルシューティングは求めていません。

むしろ、私はAndroid/Eclipse/Javaルーキーが単純なAndroidアプリケーションを開発(およびデバッグ)するために膨大な情報を消化するこの手ごわいタスクに取り組むための最良の戦略の概要を求めています。 。

私の場合、SDKからサンプルのスケルトンアプリを取得し、それをわずかに変更しました。実行しようとした瞬間に何が得られましたか?

アプリケーション(process.com.example.Android.skeletonapp)が予期せず停止しました。もう一度やり直してください。

OK、だから私はLogCatを見る必要があることを知っています。タイムスタンプ付きの行が私をじっと見つめています...今、私は何をしますか?何を探す必要がありますか?

アプリをクラッシュさせるステートメントを見つけるために、プログラムをシングルステップする方法はありますか? (Javaプログラムは決してクラッシュしないと思ったが、どうやら間違えたようだ)

ブレークポイントを配置するにはどうすればよいですか?

this one 以外のAndroid debugtutorialオンラインを推奨できますか?

24
Android Eve

私はEclipse/Android初心者でもありますが、私の簡単なデバッグプロセスが役立つことを願っています...

Eclipseでブレークポイントを設定するには、ブレークする行の横を右クリックし、「ブレークポイントの切り替え」を選択します。そこから、標準の「実行」ではなく「デバッグ」を選択すると、ステップスルーなどが可能になります。 LogCatが提供するフィルター(チュートリアルで参照)を使用して、すべての出力を探し回るのではなく、目的のメッセージをターゲットにできるようにします。これは(うまくいけば)エラーを理解するのに役立つでしょう。

他の良いチュートリアルについては、私は自分自身をいくつか探していましたが、まだ宝石を見つけることができませんでした。

16
HappyCodeMonkey

ログをエラーのみにフィルターし、致命的な例外を探します

9
jqpubliq

Eclipseの「デバッグ」パースペクティブ内でLogcatディスプレイを使用する場合、線は色分けされます。アプリが通常赤で表示されるため、アプリがクラッシュした原因を見つけるのは非常に簡単です。

Java(またはDalvik)仮想マシンは決してクラッシュしませんが、プログラムが例外をスローしてキャッチしない場合、VMはプログラムを終了します。あなたが見ている「クラッシュ」です。

4
Richard

アプリに必要なアクセス許可があるかどうかを確認します。私も同じエラーを受け取っていたので、これを示すlogcatデバッグログを確認しました。

04-15 13:38:25.387: E/AndroidRuntime(694): Java.lang.SecurityException: Permission Denial: starting Intent { act=Android.intent.action.CALL dat=tel:555-555-5555 cmp=com.Android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44068640 694:rahulserver.test/10055} (pid=694, uid=10055) requires Android.permission.CALL_PHONE

次に、Androidマニフェストで必要な許可を与えました。

0
rahulserver