開発
開発
プラットフォームを選択

Logcatを使ったログの収集

LogcatロギングユーティリティはAndroid SDKに含まれるコマンドラインツールで、OSとアプリのログメッセージを表示するために利用されます。開発段階において、デバイスでアプリが実行されている間のアプリとAndroid OSの動作を確認するうえで、Logcatは不可欠なツールです。Logcat VrApiログの解釈について詳しくは、VrApi統計ガイドをご覧ください。

概要

Logcat は、Android OSに含まれるコマンドラインツールであり、Meta Questデバイスでアプリが実行されている間にこれを使用して、アプリとAndroid OSからのログに記録されたメッセージを表示することができます。メッセージには以下のものが含まれます。
  • Androidとシステム関連のメッセージ。ハードウェアのステータスのハートビート、エラー時にスローされたスタックトレースなど。
  • Meta Horizon OS関連のメッセージ。アプリの起動時と停止時のログ、Questヘッドセットの着脱時のログなど。
  • 現在実行中のMeta Questアプリ関連のメッセージ。CPUやGPUのレベルの変化、アプリのパフォーマンスに関する情報など。アプリ開発者は、Android Logクラスを使って、Logcatに表示されるアプリのログを追加することもできます。
この情報を利用して、パフォーマンスの問題が生じている部分を特定したり、クラッシュの原因を突き止めたりすることができます。Logcatを利用すれば、最近クラッシュしたアプリからログを取得して原因を特定できる可能性もあります。
Logcatの利点には、Android開発者に熟知されていること、オーバーヘッドが少ないこと、エンジンに左右されないことがあります。提供される情報は基本的なものだけですが、LogcatはMeta Questモバイルアプリの一般的なトリアージのためのツールとして有用です。

Logcatを使ったMeta Questログの収集

次のセクションでは、Logcatを設定する方法、デバイスで実行中のアプリからMeta Questログを収集する方法、Logcatを利用していなかった場合に発生したクラッシュのログを表示する方法について説明します。

基本的な使用方法

Logcatを使用するには、OSシェルを起動し、USBまたはWi-Fi経由でADBとMeta Questデバイスとの接続を確立した後、次のコマンドを入力します。
adb logcat
デバイスが接続されて検出されると、シェルに出力ログの表示がすぐに始まります。多くの場合、この未加工出力は情報が多すぎて利用することができません。これは、Logcatを使用してタグでフィルタリングすることにより、解決できます。特定のタグのみを表示するには、次のようにします。
adb logcat -s <tag>
次の例では、VrApiタグを使用したアウトプットのみ、XrPerformanceManagerタグを使用したアウトプットのみ、およびいずれかのタグを使用したアウトプットのみを示します。
adb logcat -s VrApi
adb logcat -s XrPerformanceManager
adb logcat -s VrApi,XrPerformanceManager
logcatは最近のアウトプットのバッファを保持しており、実行するとすぐにこのバッファが出力されます。logcatバッファ内のすべてのデータをクリアするには、次のようにします。
adb logcat -c
連鎖状になっている可能性があることに注意してください。コマンドを入力した瞬間からXrPerformanceManagerタグが付いているすべてのアウトプットを表示するには、以下を使用します。
adb logcat -c; adb logcat -s XrPerformanceManager
logcatからのアウトプットは以下の例のようになります。
01-19 16:05:56.196  2817  3566 I XrPerformanceManager: perfmgr: SetClockLevels: Apply pending clock request change: 4,3 -> 3,3
これらが表すものは、次のとおりです。
統計説明
01-19 16:05:56.196
記録された時点のタイムスタンプ。logcatは以前のアウトプットのバッファを保持しているため、このタイムスタンプはログを印刷する前のものである可能性があります。
2817
このログを生成したプロセスにオペレーティングシステムが割り当てたID。
3566
このログを生成したスレッドにオペレーティングシステムが割り当てたID。
I
このログの重大度。昇順で、Verbose (詳細)、Debug (デバッグ)、Info (情報)、Warning (警告)、Error (エラー)、Severe (重大)。
XrPerformanceManager
このログに適用されるタグ。
SetClockLevels: Apply pending clock request change: 4,3 -> 3,3
このログの本文。
ネイティブのVrAppFrameworkのコードでは、通常LOG()マクロを利用してメッセージを出力します。ほとんどのソースファイルでは、そのファイル特有のタグを渡すように定義されます。いくつかの追加ロギングマクロがLog.hで定義されていますが、すべて__android_log_print()呼び出しに解決されます。
logcat VrApiログとXrPerformanceManagerログの解釈については、Logcat統計の定義をご覧ください。

logcatを使用してクラッシュの原因を突き止める

アプリがクラッシュした時点で、必ずしもLogcatが実行されているとは限りません。幸いなことに、最近の出力のバッファが保持されているので、多くの場合、クラッシュ直後に次のLogcatにコマンドを発行することにより、クラッシュのバックトレースを含むログをキャプチャできます。
adb logcat > crash.log
上記のコマンドを発行して、バッファに入れられていた出力をシェルがログファイルにコピーするまで少しの間待機してから、ADBを終了します(WindowsコマンドプロンプトまたはmacOSターミナルプロンプトでCtrl+C)。その後、ログから「backtrace:」を検索して、クラッシュで始まるスタックトレースを見つけます。
経過時間が長すぎてログにバックトレースが表示されない場合は、bugreportコマンドを使用して、クラッシュの分析に役立つログ、tombstone、およびその他のデータを含む.zipファイルを取得できます。
adb bugreport outputfile.zip
ファイルはユーザーの現在のディレクトリに配置されます。出力ファイル名が指定されない場合、ファイル名には日付が使用されます。

より良いスタックトレースの取得

通常、Logcatキャプチャのバックトレースにはクラッシュが発生した関数が示されるだけで、行番号は示されません。クラッシュに関する詳細な情報を取得するには、Android Native Development Kit (NDK)をインストールする必要があります。NDKをインストールすると、ndk-stackユーティリティを使用してLogcatログの状態を解析することにより、スタックの状態に関するより詳細な情報が得られます。ndk-stackを使用するには、以下のコマンドを発行します。
ndk-stack -sym <path to symbol file> -dump <source log file> > stack.log
例えば、次のコマンドはOculus 360度写真のシンボル情報を利用して、crash.log内に見つかるバックトレースを利用した詳細なスタックトレースをstack.logという名前のファイルに出力します。
ndk-stack -sym VrNative\Oculus360Photos\obj\local\armeabi-v7a -dump crash.log > stack.log

参考情報

ナビゲーションロゴ
日本語
© 2026 Meta