2012-05-24 13 views
5

मैंने शुद्ध सी ++ कोड से बाइनरी एक्साटेबल बनाया है और यह एंड्रॉइड डिवाइस पर चलते समय समय त्रुटि को संकेत देता है।एंड्रॉइड पर शुद्ध देशी कोड डीबग कैसे करें?

मैं एंड्रॉइड के लिए शुद्ध देशी कोड कैसे डिबग कर सकता हूं? ऐसा लगता है कि मौजूदा विधियां शुद्ध देशी कोड के लिए नहीं हैं।

+0

मैं आपको http://stackoverflow.com/questions/how-to-ask पढ़ने की सलाह दूंगा और उत्तर देने में आपकी सहायता करने के लिए हमारी क्षमता में सुधार करने के लिए फिर से पूछने का प्रयास करूंगा। –

+0

धन्यवाद। मुझे समाधान मिला है। यहां पोस्ट करें और उम्मीद करें कि इससे इस समस्या से परेशान अन्य लोगों की मदद मिल सकती है। – behe

उत्तर

0

एंड्रॉइड GDB के उपयोग का समर्थन करता है। हालांकि, मुझे ध्यान रखना चाहिए कि यदि "शुद्ध सी ++" से आपका मतलब है कि आवेदन में कोई जावा नहीं है, तो तकनीकी रूप से इसकी अनुमति नहीं है (हालांकि आप निश्चित रूप से इसे कर सकते हैं)। देखें the NDK page.

3

चरण 1: (लगता है यह testexec नाम है) एंड्रॉयड एमुलेटर पर gdbserver और अपने unstrippedदेशी बाइनरी निष्पादन रखो। जैसे आप इसे फ़ोल्डर/डेटा/डेटा/परीक्षण के तहत रख सकते हैं। और chmod कमांड को अनुमति जोड़ने के लिए कमांड का उपयोग करें।

चरण 2: जीडीबी डीबगर शुरू करें।

चरण 2.1:: और इस कदम के उप-चरणों का पालन के होते हैं आपके मेजबान मशीन टर्मिनल पर आदेश टाइप करके एमुलेटर की gdb डीबगर प्रारंभ:

adb shell /data/data/test/gdbserver 10.0.2.2:1234 /data/data/test/testexec 

एमुलेटर तो पोर्ट 1234 पर सुनता है।

चरण 2.2:

telnet localhost 5554 
: एमुलेटर की gdbserver साथ स्थानीय मशीन के gdb डीबगर कनेक्ट करें

यह संकेत देगा:

एंड्रॉयड कंसोल: प्रकार 'मदद'

इनपुट

ठीक आदेशों की सूची के लिए:

redir add tcp:1234:1234 

सक्षम करने के लिए डेटा में रीडायरेक्ट और फिर

टाइप करें

चरण 2.3: स्थानीय मशीन के जीडीबी डीबगर शुरू करें। इनपुट:

arm-linux-androideabi-gdb.exe YOUR_ EXECUTABLE_PATH_ON_LOCAL_MACHINE\testexec 

उसके बाद, इनपुट

target remote localhost:1234 

gdbserver से कनेक्ट करने के।

अंत में, अपने डिबगिंग का आनंद लें!

+0

क्या आप जानते हैं कि टेलनेट से वास्तविक डिवाइस से कनेक्ट कैसे करें - एक एमुलेटर नहीं? मैं आईपी के लिए 'adb shell ip -f inet addr show' के साथ पूछताछ करने का प्रयास कर रहा था लेकिन कनेक्ट नहीं कर सकता – Chris

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