私は、多くの3rdパートライブラリと自家製ライブラリとリンクするhello world C++アプリケーションを持っています。 Segmentation Faultを使用して、ロードしようとするとすぐにクラッシュします。 同じ依存関係を持ち、Linux向けにコンパイルされた同じコードが正常に実行されます。Android C++アプリケーションが共有ライブラリステージへのリンク時にクラッシュする
どうすればデバッグを開始できますか?
理由は何でしょうか?
編集:これは、プリントをlogcatものです:
F/libc (8129): Fatal signal 11 (SIGSEGV), code 128, fault addr 0x0 in tid 8129 (HelloWorldApp) I/DEBUG (2876): *** *** *** *** *** ***
*** *** *** *** *** *** *** *** *** *** I/DEBUG (2876): Build fingerprint: 'Intel/cht_hr/cht_hr:5.1.1/LMY47Z/LS0000037:userdebug/test-keys' I/DEBUG (2876): Revision: '0' W/NativeCrashListener(3194): Couldn't find ProcessRecord for pid 8129 I/DEBUG (2876): ABI: 'x86' I/DEBUG (2876): pid: 8129, tid: 8129, name: HelloWorldApp >>> ./StaticImageOR <<< E/DEBUG (2876): AM write failure (32/Broken pipe) I/DEBUG (2876): signal 11 (SIGSEGV), code 128 (SI_KERNEL), fault addr 0x0 I/DEBUG (2876): eax ff84cadc ebx f32b7c6c ecx 00000010 edx 00000000 I/DEBUG (2876): esi f32c6610 edi 00000000 I/DEBUG (2876): xcs 00000023 xds 0000002b xes 0000002b xfs 00000000 xss 0000002b I/DEBUG (2876): eip f2600cfb ebp ff84c6dc esp ff84c5f4 flags 00010246 I/DEBUG (2876): I/DEBUG (2876): backtrace: I/DEBUG (2876): #00 pc 0062fcfb /system/lib/libcommander.so I/DEBUG (2876): #01 pc 0017651f /system/lib/libcommander.so I/DEBUG (2876): #02 pc 00001fcb /system/bin/linker (__dl__ZN6soinfo16CallConstructorsEv.part.23+1275) I/DEBUG (2876):
#03 pc 00001c26 /system/bin/linker (__dl__ZN6soinfo16CallConstructorsEv.part.23+342) I/DEBUG (2876):
#04 pc 00001c26 /system/bin/linker (__dl__ZN6soinfo16CallConstructorsEv.part.23+342) I/DEBUG (2876):
#05 pc 00008706 /system/bin/linker (__dl___linker_init+4998) I/DEBUG (2876): #06 pc 00009e0e /system/bin/linker (__dl__start+30) I/DEBUG (2876): I/DEBUG (2876): Tombstone written to: /data/tombstones/tombstone_02
だから私はこの問題は、libcommanderの負荷であるundersatnd。
これを続ける方法?
ありがとうございます!
エミュレータを使用してデバッガで実行しますか?何千もの理由のいずれかになる可能性があります。 –
@JoachimPileborg:それはまさに私の質問です:どのように私はそれをデバッグできますか? –
AndroidはロックダウンサブセットAPI(CおよびC++)なので、ライブラリがAndroid C/C++ライブラリに存在しない(または制限されている)関数を呼び出している可能性があります。 libcomanderはあなたのデバイスに根ざしていますか? –