Is it possible to debug C/C++ in Android Studio?

前端 未结 6 1612
时光取名叫无心
时光取名叫无心 2020-12-14 17:04

I\'m writing an Android app that includes C/C++ code that is compiled alongside the Java code. My app is crashing during the execution of the native code.

Is there

6条回答
  •  星月不相逢
    2020-12-14 17:55

    It isn't wasn't isn't working very well.

    hello-jni fails failed with:

    Starting LLDB server: run-as com.example.sample 
    /data/data/com.example.sample/lldb/bin/start_lldb_server.sh 
        /data/data/com.example.sample/lldb 
            /data/data/com.example.sample/lldb/tmp/platform.port1442695333842 "lldb 
        process:gdb-remote packets"
    Error while launching debug server on device: 
        com.android.tools.ndk.run.DebuggerContext$StartServerException: 
            java.lang.IllegalStateException: Failed to read platform port 
                /data/data/com.example.sample/lldb/tmp/platform.port1442695333842
    

    I'm using 1.4RC1

    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    

    And the "app-native" run configuration @Gerry mentioned. It's nearly there, but I can find no trace of an lldb directory in my app's private data folder. I do find a 400kb gdbserver in the lib directory linked from there, with my own *.so right besides. Unfortunately the option for debugging with gdb instead of lldb has gone with the upgrade from 1.3 to 1.4. NDK 10e ships a 400kb gdbserver binary in ndk\prebuilt\android-arm\gdbserver which it is (I guess). On September 15th the gdb debug howto https://github.com/mapbox/mapbox-gl-native/wiki/Android-debugging-with-remote-GDB was updated. This is harder than logcat debugging IMO, but a current topic, sorry to be so negative but I don't believe lldb actually works yet.

    I have run hello-jni and reached the same conclusion.

    So in answer to your question, it is not yet possible to debug C/C++ in Android Studio. Sorry this wasn't the answer you hoped for and I hope to be proved wrong with conclusive evidence to the contrary, but right here, right now, no chance!

    UPDATE I raised an issue where I was given a fix for one phone.

    UPDATE2 Too early to tell, it is experimental after all, but I am occasionally failing to connect, often if not always getting out of order stepping and breakpoints with nonsense parameter values. I just set a conditional breakpoint that didn't fire but the logcat shows it should. Initially I assumed it was my logical error, but it goes deeper.

    Simply hitting breakpoints at all is very helpful but it is still a million miles short of Java debugging, or Vis Studio C++ debugging.

    UPDATE3 Gone back to stable 1.3.1 as the canaray channel version was pausing for a toilet break every keystroke. While native debug build at least launches with my "fixed" phone, no breakpoints are hit even in hellojni, or a slightly extended version to give more opportunity. I'm used to logcat now but have had better degbugging experiences with Android, NDK and Eclipse. A more elaborate solution is also easier to break, but at least it works.

提交回复
热议问题