2017-01-24 18 views
7

Tôi đang gặp sự cố khi gỡ lỗi các tệp C++ trong mô-đun thư viện của mình.Gỡ lỗi C++/mô-đun thư viện gốc không hoạt động với Android Studio (Cmake được sử dụng)

Điều này có thể nói chung không?

Gỡ lỗi hoạt động tốt nếu dự án ứng dụng chứa mã C++. Nhưng tôi muốn di chuyển Mã C++ vào một mô-đun thư viện.

Các Thông báo lỗi khi bắt đầu phiên họp:

Bây giờ ra mắt Native gỡ lỗi phiên

Chú ý! Không danh bạ biểu tượng tìm thấy - vui lòng kiểm tra cấu hình debug mẹ đẻ của bạn

tập tin gradle của lib của tôi:

apply plugin: 'com.android.library' 


android { 
compileSdkVersion 24 
buildToolsVersion "25.0.2" 
defaultConfig { 

    minSdkVersion 16 
    targetSdkVersion 21 
    versionCode 1 
    versionName "1.0" 
    externalNativeBuild { 
     cmake { 
      arguments "-DANDROID_PLATFORM_LEVEL=${11}", 
        '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static' 
     } 
    } 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
externalNativeBuild { 
    cmake { 
     path "CMakeLists.txt" 
    } 
} 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:support-annotations:24.2.0' 
} 

Trong cấu hình chạy trình gỡ lỗi được thiết lập để tự động

enter image description here


bổ sung:

Im sử dụng:

Gradle: 2.2.3

Android Studio: 2.2.3


trong Console LLLB, tôi đã kiểm tra danh sách breakpoint với :

danh sách điểm dừng -v

tất cả các trạm kiểm soát của tôi được liệt kê ở đó.

Không Working Breakpoint

1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0 

..thats tất cả

Working Breakpoint

1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0 
    1.1: 
     module = C:\android-dev\...\test.so 
     compile unit = gl_code.cpp 
     function = testFunc(..) 
     location = C:\android-dev\...\test.cpp:16 
     address = 0x0000007f871d068c 
     resolved = true 
     hit count = 1 

Trả lời

7

Lý do có vẻ là, phiên bản phát hành của lib được tạo, không hỗ trợ gỡ lỗi. Ngay cả khi ứng dụng được xây dựng với các tùy chọn gỡ lỗi.

Giải pháp:

Để giải quyết vấn đề này, thực hiện giải pháp sau đây. Nó đảm bảo rằng một phiên bản gỡ lỗi được xây dựng.


Trong ứng dụng của bạn build.gradle thay đổi:

compile project(':nativelib') 

để

compile project(path: ':nativelib' , configuration: 'debug') 

Trong libs build.gradle thêm:

android { 

    publishNonDefault true //this line 

    compileSdkVersion 24 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
    ... 
    } 
... 
}  

Cập nhật:

Xem vấn đề google theo các bản cập nhật:

https://code.google.com/p/android/issues/detail?id=222276

2

tôi đã có vấn đề tương tự với các thư viện của riêng tôi vài tháng trước đây bởi vì tôi nghĩ nếu tôi thêm cờ -g (gcc), nó sẽ tạo ra các biểu tượng gỡ lỗi, các ứng dụng desktop (linux, unix kernel).

Nhưng, thực tế nó không hoạt động để tạo các biểu tượng gỡ lỗi.

Tôi thấy rằng bạn sử dụng Cmake làm công cụ xây dựng bên ngoài và trình biên dịch tiếng kêu.

Vì vậy, trong trường hợp của tôi, tôi cấu hình cmake kịch bản của tôi với gcc nhưng ra khỏi kịch bản gradle, nhưng tôi nghĩ rằng nó sẽ giống nhau, tôi thêm -mapcs-frame trong CMAKE_CXX_FLAGS.

externalNativeBuild { 
     cmake { 
      arguments "-DANDROID_PLATFORM_LEVEL=${11}", 
        '-DANDROID_TOOLCHAIN=gcc', 
        '-DANDROID_STL=gnustl_static', 
        'DCMAKE_CXX_FLAGS=-mapcs-frame' 
     } 
    } 

Tôi biết rằng nếu bạn sử dụng công cụ biên dịch có thể là cờ này không thể hoạt động. Nhưng ý tưởng của tôi là chia sẻ trải nghiệm của tôi với gỡ lỗi gốc của Android.

Tôi hy vọng manh mối này có thể giúp bạn.

Chúc mừng.
Unai.

+0

Cám ơn ý tưởng của bạn. Tôi đã cố gắng biên dịch nó với gcc và các đối số của bạn. Vẫn có những vấn đề tương tự. – FlanschiFox

+0

Có thể bạn đã thực hiện, bạn có đang sử dụng thử nghiệm gradle để gỡ lỗi thư viện gốc không? Tôi thường dùng gradle 0.7.0 thí nghiệm – uelordi

+0

Tôi dùng gradle 2.2.3. Doc nói rằng nó được hỗ trợ từ 2.2.0 – FlanschiFox

Các vấn đề liên quan