0

SDK ライブラリ (C コードと Java コードの両方) をステップ実行して、何が起こっているのかを正確に特定する方法が必要です。ここまでで、NDK をインストールし、GDB を起動して実行しました。プロセスにアタッチできます。試してみましbtstraceが、有用な情報は得られません。

  1. SDK から Java コード (およびネイティブ C コードの場合はネイティブ C コード) にステップインし、コードを 1 行ずつ実行できるようにするには、どうすればよいですか?

  2. GDB を使用して、より有用な情報を提供する方法はありますか?

4

2 に答える 2

1

Android は、さまざまな関係者がバインダーを介して通信するマルチプロセス UI フレームワークです。SDK 開発者は、プロンプトが表示されたときにソース jar を ADT プロジェクトにアタッチすると、クライアント側の Java ソースにステップインできるはずです。アプリの JNI コードをデバッグする場合は、NDK デバッグ ツールを使用できます。これらのレイヤーの下に移動したり、複数のプロセスをデバッグしたりする場合は、注意が必要です。

クライアント側のネイティブ フレームワーク ライブラリへのステップインについて理解するには、Android Java アプリのネイティブ ライブラリのデバッグに関する記事を参照してください。

system_server (コア フレームワーク サービスをホストするプロセス) の Java コードをデバッグする場合は、Android Java フレームワーク サービスのデバッグの記事を確認してください。

于 2014-07-16T13:38:48.333 に答える
0

質問には部分的に答えることができましたが、残念ながら答えは簡単ではありません。

Java のデバッグ

Java ソースをデバッグするには、Android 自体のソース コードを取得する必要があります。それはここにあります: source.android.com。ソースをダウンロードする方法についての指示がそこに提供されています。説明書には、OSX または Linux で手順を実行する必要があると記載されていますが、Cygwin を使用できる場合もあります。hereに記載されているように、ファイルは 1 つの一貫した場所にありません。前述のページで提供されているPython スクリプトを使用して、ソースの zip ファイルを生成しました。Java ファイルを 1 か所に配置したら、コンパイル済みの Java コードにステップ インするときに、Eclipse をそれらのファイルに向けるだけです。

ネイティブのデバッグ

私はまだこの部分に取り組んでいます。これまでのところ、Cygwin から GDB を使用してアプリに接続できますが、ネイティブ C ファイルに実際にステップインする必要はありません。おそらく、ライブラリはデバッグ モードでビルドする必要があります。

于 2013-03-09T13:58:30.400 に答える