Android Studio 가 so 파일 C/C++코드 를 디버그 하 는 방법 에 대해 간단히 이야기 합 니 다.

4071 단어 androidstudioCC++
C/C++크로스 플랫폼 개발 에서 우 리 는 Windows 에서 VS 를 통 해 단일 정지점 디 버 깅 을 할 수 있다 는 것 을 알 고 있 습 니 다.이것 은 매우 편리 합 니 다.그러나 저희 가 동적 라 이브 러 리 so 를 컴 파일 하면 그 절차 와 각 단 계 를 추적 하고 싶 습 니 다.예 를 들 어 FFmpeg/VLC 등 라 이브 러 리 내부 demux 프로 세 스 나 Codec 프로 세 스 를 어떻게 추적 합 니까?오늘 은 작은 Demo 를 통 해 Debug 라 이브 러 리 파일 C/C+코드 를 진행 합 니 다.
첫째,NDK 와 빌 드 도 구 를 다운로드 하여 로 컬 코드(native code)를 컴 파일 하고 디 버 깅 하려 면 다음 구성 요소 가 필요 합 니 다.
1.The Android Native Development Kit(NDK):Android 에서 C 와 C++코드 를 사용 할 수 있 는 도구 모음 입 니 다.
2.CMake 외부 구축 도구.ndk-build 만 사용 하려 면 사용 하지 않 아 도 됩 니 다.
3.LLDB:Android Studio 에서 로 컬 코드 를 디 버 깅 하 는 장인.
메모:Android Studio 에서 CMake 또는 ndk-build 를 사용 하려 면 Android Studio 2.2 또는 더 높 은 버 전 을 사용 해 야 하 며,Android Plugin for Gradle 2.2.0 이상 의 버 전 을 함께 사용 해 야 합 니 다.
위 구성 요소 설치:
  • 예 를 들 어 SDK Tools 가 LLDB,CMake,NDK 를 표시 하지 않 는 다 면 국내 미 러 사이트 가 설정 되 어 있다 는 것 을 설명 합 니 다!
  • 구 글 홈 페이지 에 올 라 가 야 표 시 됩 니 다.예전 에 도 국내 미 러 를 통 해 표시 되 지 않 았 습 니 다!
  • Tools>Android>SDK Manager>SDK Tools 옵션 을 클릭 합 니 다.LLDB,CMake,NDK 를 선택 하 십시오.

    android-ndk-r11b 가 따로 다운로드 되 었 습 니 다.NDK 를 다운로드 하지 않 습 니 다!최신 NDK 다운로드)를 선택 하고 애플 리 케 이 션 을 클릭 한 다음 OK 를 클릭 하 는 것 이 좋다.
    2.새 항목:
    1.include C++support 를 체크 합 니 다.
    2.마지막 단계 에서 다른 C++라 이브 러 리 를 선택 할 수 있 습 니 다.

    설명:C/C++를 지원 하지만 C/C++의 모든 기능 을 완전히 지원 하 지 는 않 습 니 다.jni 의 약속 에 따라 야 합 니 다.구체 적 으로 jni 매 뉴 얼 C+Standard:C++라 이브 러 리 를 참조 할 수 있 습 니 다.
  • 툴 체인 기본 값:기본 CMake 설정
  • C++11:C++11 기능 지원!
  • Exceptions Support(-fexceptions):
  • C++이상 처리 에 대한 지원 을 사용 하려 면 선택 하 십시오.선택 하면 Android Studio 는 module 층 의 build.gradle 파일 에 있 는 cppFlags 에-fexcetions 로 고 를 추가 합 니 다.
    Runtime Type Information Support(-frtti):RTTI 를 지원 하고 싶다 면 선택 하 십시오.선택 하면 Android Studio 는 module 층 의 build.gradle 파일 에 있 는 cppFlags 에-frtti 플래그 를 추가 합 니 다.
    설명:
  • native-lib.cpp:자동 으로 생 성 된 C++원본 파일
  • CMakeLists.txt:CMake 스 크 립 트 는 스 크 립 트 구축 명령 에 따라 C++원본 파일,즉 native-lib.cpp 를 컴 파일 하고 컴 파일 된 결과 물 을 공유 대상 라 이브 러 리 에 던 져 libnative-lib.so 라 고 명명 한 다음 Gradle 은 APK 에 압축 합 니 다.
  • External Build Files 가 CMake 나 ndk-build 구축 스 크 립 트 를 저장 하 는 곳.build.gradle 파일 이 Gradle 에 게 앱 을 어떻게 컴 파일 하 는 지 알려 주 는 것 과 비슷 합 니 다.CMake 와 ndk-build 도 native library 를 컴 파일 하 는 방법 을 알려 주 는 스 크 립 트 가 필요 합 니 다.
  • 1.안 드 로 이 드 탭 노드 의 buildTypes 만 설정 하면 됩 니 다.
    
    buildTypes{  
      debug{
        jniDebuggable true
        jniDebuggable = true
      }
    }
    2.Android Manifest 속성 설정:android:debuggable="true"
    
    <application android:label="@string/app_name"       
           android:debuggable="true">
      <activity android:name=".HelloJni"       
           android:label="@string/app_name">
      <intent-filter>
      <action android:name="android.intent.action.MAIN" />      
      <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      </activity>
    </application>
    3.Run/Debug 설정

    a,run 드 롭 다운 item,Edit Configurations,팝 업 설정 창 선택
    b.클릭➕새 configuraionts,안 드 로 이 드 네 이 티 브 항목 선택
    c.native 가 실행 하 는 이름 을 설정 합 니 다.예 를 들 어 hellojniNative.
    d.실제 컴퓨터 나 시 뮬 레이 터 디 버 깅 을 선택 하 십시오.
    정지점 디 버 깅 실행


    그림 1,그림 2 는 app-native 를 실행 하 는 두 가지 방식 으로 app-native 를 선택 한 후 debug->app-native;다음은 C/C++파일 에서 단일 디 버 깅 을 할 수 있 습 니 다.
    여기에 문 제 를 잠시 남 겨 두 겠 습 니 다.이미 컴 파일 된 기호 표 가 있 는 동적 라 이브 러 리.so 파일 이 라면 어떻게 디 버 깅 을 합 니까?
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기