かなり自明です。私はndkを使ってネイティブのC++のexeファイルをコンパイルしました。私は、アプリケーションを実行すると、それはSIGSEGVを取得し、segフォールトを終了します。 logcatにはスタックトレースやCPUコンテキストはありません。segフォールトのネイティブアンドロイドアプリケーションの場合、なぜlogcatにスタックトレースがないのですか?
なぜですか?どのようにそれを修正するための任意の提案?
かなり自明です。私はndkを使ってネイティブのC++のexeファイルをコンパイルしました。私は、アプリケーションを実行すると、それはSIGSEGVを取得し、segフォールトを終了します。 logcatにはスタックトレースやCPUコンテキストはありません。segフォールトのネイティブアンドロイドアプリケーションの場合、なぜlogcatにスタックトレースがないのですか?
なぜですか?どのようにそれを修正するための任意の提案?
sigsev
のデバッグに使用できるツールは2つあります。 ndk-stac
kとarm-linux-androideabi-addr2line
は$NDK
ディレクトリにあります。最初にstacktraceとaddr2lineをフィルタリングすると、プログラムアドレスがファイル名と行番号に変換されます。ドキュメントについては、$NDK
ディレクトリを確認してください。
あなたはすべて間違っているので、STDIOとSTDERRのログを記録するにはログを有効にする必要があります。
http://developer.android.com/tools/debugging/debugging-log.html#viewingStd
スタックトレースは、logcatでは使用できませんので、このユーティリティの両方には良いもしません。私はndk-stackを読みました。これは、*** *** *** ***行から始まるlogcatで利用可能なスタックトレースに依存します。再び、addr2lineはそこにあるスタックトレースに依存します。 – hokey
ネイティブエラーのstacktraceはアプリケーションフィルタに適合しません。すべてのメッセージ(フィルタなし)タブで検索するか、タグDEBUG –
@ ferdy182のフィルタを追加する必要があります。正確には – Blackbelt