2017-01-24 8 views
7

मुझे अपने लाइब्रेरी मॉड्यूल की सी ++ फ़ाइलों को डीबग करने में समस्या हो रही है।डीबगिंग सी ++/देशी लाइब्रेरी मॉड्यूल एंड्रॉइड स्टूडियो (सीमेक प्रयुक्त) के साथ काम नहीं कर रहा है

क्या यह सामान्य रूप से संभव है?

यदि अनुप्रयोग प्रोजेक्ट में सी ++ कोड होता है तो डिबगिंग ठीक काम करता है। लेकिन मैं सी ++ कोड को लाइब्रेरी मॉड्यूल में ले जाना चाहता हूं।

त्रुटि संदेश सत्र प्रारंभ करते समय:

अब शुभारंभ मूल निवासी डीबग सत्र

सावधान! कोई प्रतीक निर्देशिका मिला - अपनी मूल डिबग विन्यास की जाँच करें

मेरी lib की Gradle फ़ाइल:

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' 
} 

रन विन्यास में डिबगर ऑटो

enter image description here

पर सेट है

परिवर्धन:

इम का उपयोग कर:

Gradle: 2.2.3

एंड्रॉयड स्टूडियो: 2.2.3


LLLB कंसोल में

, मैं साथ ब्रेकप्वाइंट सूची की जाँच :

ब्रेकपॉइंट सूची -v

मेरे सभी चेकपॉइंट्स सूचीबद्ध हैं।

काम नहीं कर रहा ब्रेकप्वाइंट

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

..thats सभी

कार्य ब्रेकप्वाइंट

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 

उत्तर

7

कारण ऐसा लगता है कि lib का रिलीज़ संस्करण बनाया गया है, जो डीबगिंग का समर्थन नहीं करता है। भले ही ऐप डीबग विकल्पों के साथ बनाया गया हो।

समाधान:

इस समस्या को हल करने के लिए निम्न वैकल्पिक हल करते हैं। यह सुनिश्चित करता है कि एक डीबग संस्करण बनाया गया है।

compile project(':nativelib') 

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

libs में जोड़ने build.gradle:

android { 

    publishNonDefault true //this line 

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

आपकी ऐप्लिकेशन में परिवर्तन build.gradleअपडेट:

अद्यतन के लिए अनुसार गूगल मुद्दा देखें:

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

2

मैं कुछ महीने पहले अपने खुद के पुस्तकालयों के साथ इसी तरह की समस्या हुई क्योंकि मैंने सोचा कि अगर मैंने -g (gcc) ध्वज जोड़ा है तो यह डीबग प्रतीक उत्पन्न करेगा, ए डेस्कटॉप (लिनक्स, यूनिक्स कर्नेल) ऐप्स है।

लेकिन, वास्तव में यह डीबग प्रतीकों को उत्पन्न करने के लिए काम नहीं करता है।

मुझे लगता है कि आप बाहरी निर्माण उपकरण और क्लैंग कंपाइलर के रूप में सीमेक का उपयोग करते हैं।

तो मेरे मामले में मैं जीसीसी लेकिन Gradle पटकथा से बाहर के साथ मेरी cmake स्क्रिप्ट कॉन्फ़िगर है, लेकिन मुझे लगता है कि यह एक ही हो जाएगा, मैं CMAKE_CXX_FLAGS में -mapcs फ्रेम जोड़ें।

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

मुझे पता है कि अगर आप क्लैंग संकलन का उपयोग करते हैं तो यह ध्वज काम नहीं कर सका। लेकिन मेरा विचार एंड्रॉइड देशी डिबगिंग के साथ अपना अनुभव साझा करना था।

मुझे आशा है कि यह सुराग आपकी मदद कर सकता है।

चीयर्स।
यूनाई।

+0

अपने विचारों के लिए धन्यवाद। मैंने इसे जीसीसी और आपके तर्कों के साथ संकलित करने की कोशिश की। अभी भी वही समस्याएं हैं। – FlanschiFox

+0

हो सकता है कि आपने किया हो, क्या आप मूल पुस्तकालय डीबग करने के लिए प्रयोगात्मक ग्रेडल का उपयोग कर रहे हैं? मैं आमतौर पर ग्रेड 0.7.0 प्रयोगात्मक – uelordi

+0

का उपयोग करता हूं, मैं क्रमशः 2.2.3 का उपयोग करता हूं। डॉक्टर कहते हैं, कि यह 2.2.0 के बाद से समर्थित है – FlanschiFox

संबंधित मुद्दे