私はAndroid Studioのlldbを使ったネイティブデバッグからアンドロイドネイティブアプリをデバッグしようとしています。
私のネイティブアプリには、Android Studioとコンパイルされた別のlibother.soによってコンパイルされて実行されるlibmain.soが1つ含まれています。デバッグ時にlibmain.soではブレークポイントを設定できますが、libother.soでは設定できません。
共有オブジェクトはどちらも削除されますが、Android Studioではlibmain.soの削除されていないバージョンについてlldbに知らせています。私はlibother.soのために同じことをしたい。LLDB:シンボルファイルを追加しますか?
lldbにローカルマシン上のストリップされていないファイルからシンボルをロードするためには、どのようなコマンドが必要ですか?
私はimage list
を行うと、私はその地元のストリップされていないバージョンへのポイントのパスで、メインの.soを参照してください。私はどのように /var/folders/3w/5nr95lxx3qvdm2ylb8c8b7500000gn/T/./lldb/module_cache/remote-android/.cache/B5F32653-0000-0000-0000-000000000000/libother.so
のようなパスと
/Users/username/Projects/gow/android/AppName/app/build/intermediates/binaries/debug/arm7/obj/armeabi-v7a/libmain.so
と第二の.so lldbにアンストライプされたバージョンlibother.so
を見つけさせますか?
image add
とtarget symbols add
を試しましたが、動作しませんでした。
あなたはGradleのでアプリをビルドしてください:
は、このコマンドは(例えば
lldb.cmd
)を提出し、このようlldb開始するために保存することができ、各デバッグセッションの開始後、それを入力して回避するために?もしそうなら、ビルドファイルを共有できますか?また、Android.mkファイルを共有してください。 –私はgradleで構築します。ビルドファイルはTeapotサンプル(https://developer.android.com/ndk/samples/sample_teapot.html)に付属のものと同じです。唯一の違いは私のプロジェクトでは "jniLibs"というフォルダがあることですgradleはこのフォルダを見つけて、その中の.soをapkに追加します。 .soを構築するためのAndroid.mkも、Android Studioのサポートの前にndkを使ってビルドするために使用された標準のものです。それはclangとC++ _ static(ここで追加するには大きすぎます)を使用します。私は最新のものを使用していますNDK – shoosh
あなたは窓でデバッグしていますか?あなたが提供したパスはAndroidからのものです。 NDKにはまだいくつかの既知のバグがあります。 LLDBブレークポイントでのデバッグがWindows上で常に機能するとは限りません。これを実行すると、一時的な回避策としてGDBのデバッグに切り替えることができます。 –