2015-12-03 12 views
11

डिबगिंग मैं अपने सी में सी में लिखे एक NativeActivity एप्लिकेशन ++
डिबग करने के लिए एंड्रॉयड स्टूडियो का उपयोग कर रहा ++ कोड पहली बात मैं android_main() में क्या डिबगर संलग्न करने के लिए 10 सेकंड प्रतीक्षा है। 'डिबग' विंडो में मैं देख रहा हूँ:SIG33 जब देशी Android

Now Launching Native Debug Session 

और फिर कुछ ही सेकंड

Debugger attached to process 28458 

और फिर सही यह देता के बाद, डीबगर एक संकेत के साथ बंद हो जाता है के बाद:

Signal: 33 (signal SIG33) 

मैं 'प्रोग्राम फिर से शुरू करें' दबाता हूं और फिर मुझे 7-8 बार के लिए बार-बार एक ही संकेत मिलता है। उसके बाद, कार्यक्रम अपेक्षित जारी है, डीबगर संलग्न है और मैं इसे ब्रेकपॉइंट्स पर रोक सकता हूं।

उस SIG33 का अर्थ क्या है? मैं यह कैसे रोक सकता हूँ?

+0

एंड्रॉइड स्टूडियो का कौन सा संस्करण आप उपयोग कर रहे हैं? – wizurd

+0

एंड्रॉइड स्टूडियो 1.3.1, एनडीके 10e – shoosh

+1

बस एक विचार: सिग्नल 33 प्रोग्राम के लिए हो सकता है, और आपका डीबगर इसे पास करना चाहिए। मुझे पता है कि जीडीबी के साथ ऐसा कैसे करें ('एसआईजी 33 नॉस्टॉप नोप्रिंट नोग्नोर पास 'को संभालें) लेकिन एंड्रॉइड स्टूडियो डीबगर के साथ नहीं; आशा करता हूँ की ये काम करेगा। – YSC

उत्तर

5

सिग्नल 33 बैकट्रैक सुविधाओं के लिए बायोनिक द्वारा आंतरिक रूप से उपयोग किया जाता है।

comment in __libc_current_sigrtmin.cpp देखें।

// POSIX timers use __SIGRTMIN + 0. 
// libbacktrace uses __SIGRTMIN + 1. 
// libcore uses __SIGRTMIN + 2. 

generic, arm, x86, और mips के लिए __SIGRTMIN की परिभाषा देखें।

#define __SIGRTMIN 32 

मुझे लगता है कि SIG33 gdb के कारण होता है और gdb सही ढंग से यह अनदेखी नहीं है।

+0

दिलचस्प। मैं lldb का उपयोग कर रहा हूं, जीडीबी नहीं, लेकिन मुझे लगता है कि एलएलडीबी एक ही तरीके से काम करता है और यह केवल तब ही होता है जब एलएलडीबी सिर्फ प्रक्रिया से जुड़ा होता है। कोई विचार यह क्यों नहीं अनदेखा करेगा? – shoosh

+0

आप एलएलडीबी का किस संस्करण का उपयोग कर रहे हैं? यह शायद किसी बग के कारण इसे अनदेखा नहीं कर रहा है या यह किसी अन्य लिनक्स संस्करण के लिए संकलित है। – programmerjake

1

एसआईजी 33 का उपयोग एलएलडीबी द्वारा "थ्रेडिंग लाइब्रेरीज़" के बारे में सिग्नल करने के लिए किया जाता है।

LLDB स्रोत से

अंश:

AddSignal (33, "SIG33", false, false, false, "threading library internal signal 2"); 

लेकिन मैं कारण है कि अपने कोड इस हो रही है समझने के लिए नहीं है। कुछ मामूली निर्भरता मुद्दों के कारण हो सकता है।

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