2012-03-14 21 views
2

かなり自明です。私はndkを使ってネイティブのC++のexeファイルをコンパイルしました。私は、アプリケーションを実行すると、それはSIGSEGVを取得し、segフォールトを終了します。 logcatにはスタックトレースやCPUコンテキストはありません。segフォールトのネイティブアンドロイドアプリケーションの場合、なぜlogcatにスタックトレースがないのですか?

なぜですか?どのようにそれを修正するための任意の提案?

答えて

3

sigsevのデバッグに使用できるツールは2つあります。 ndk-stac kとarm-linux-androideabi-addr2line$NDKディレクトリにあります。最初にstacktraceとaddr2lineをフィルタリングすると、プログラムアドレスがファイル名と行番号に変換されます。ドキュメントについては、$NDKディレクトリを確認してください。

+0

スタックトレースは、logcatでは使用できませんので、このユーティリティの両方には良いもしません。私はndk-stackを読みました。これは、*** *** *** ***行から始まるlogcatで利用可能なスタックトレースに依存します。再び、addr2lineはそこにあるスタックトレースに依存します。 – hokey

+7

ネイティブエラーのstacktraceはアプリケーションフィルタに適合しません。すべてのメッセージ(フィルタなし)タブで検索するか、タグDEBUG –

+1

@ ferdy182のフィルタを追加する必要があります。正確には – Blackbelt

関連する問題