2009-10-04 12 views
5

सामान्य रूप से फ्रीबीएसडी और * निक्स सिस्टम के बारे में कुछ और जानने के लिए, मैं डेफॉन 17 कैप्चर द फ्लैग गेम से द्विआधारी को देखना शुरू कर रहा हूं। अभी, मैं ट्यूकोड बाइनरी को उलट रहा हूं।gdb ब्रेकपॉइंट्स को मार नहीं रहा

tucod: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 7.2, dynamically linked (uses shared libs), FreeBSD-style, stripped 

कुछ अन्य संभवतः उपयोगी कुछ संक्षिप्त स्थिर विश्लेषण से प्राप्त जानकारी है कि tucod है बंदरगाह 0xDEAD पर बांध (प्यारा, हाँ?) और यदि आप इसे एक विशिष्ट पासवर्ड देना ("HANGEMHIGH: यहाँ tucod पर कुछ संभवतः उपयोगी जानकारी है ! ") यह आपके साथ हैंग-मैन का एक खेल खेलेंगे।

मुझे जो समस्या आ रही है वह यह है कि मैं जीडीबी में अपने ब्रेकपॉइंट्स को मार नहीं रहा हूं। विशेष रूप से, जिस ब्रेकपॉइंट को मैं एक्सेस करने का प्रयास कर रहा हूं वह उस कोड में है जो क्लाइंट कनेक्शन को संभालता है। ब्रेकपॉइंट्स के बिना, कोड अपेक्षित के रूप में निष्पादित करता है। जब मैं उस कोड पर ब्रेकपॉइंट सेट करता हूं, तो बच्चा निकलता है (जीडीबी में तोड़ने की बजाए, जैसा कि अपेक्षित है)। अगर मैं बच्चे से सर्वर पर फंसे से पहले ब्रेकपॉइंट्स सेट करता हूं, तो मैं उनको ठीक कर सकता हूं लेकिन "जारी रखने" के बाद बच्चा मेरे कनेक्शन को संसाधित नहीं करता है (यानी, यह मुझे पासवर्ड के लिए नहीं पूछेगा या हैंग-मैन खेलेंगे)।

डेमॉन कांटे जब यह एक नया कनेक्शन प्राप्त करता है के बाद से

, मैं gdb बताने के लिए इस आदेश के साथ बच्चे का पालन करने का प्रयास करें:

(gdb) set follow-fork-mode child 

लेकिन उसके बाद कांटा के बाद दिए गए निर्देशों का एकल कदम, यह इस दिखाई देने वाले काम नहीं कर रहा है

मैं signal के लिए कॉल की तलाश की कोशिश की करने के बाद, यह सोच कर वे एक कस्टम SIGINT हैंडलर (या समान), लेकिन signal के लिए एक ही कॉल कि मैं हैंडल SIGCHLD देख सकते हैं लागू किया।

gdb में मेरे ब्रेकप्वाइंट वर्तमान में इस तरह दिखता है:

(gdb) info breakpoints 
Num Type   Disp Enb Address What 
1 breakpoint  keep y 0x080497d0 

और 0x080497d0 पता मैं ग्राहक प्रसंस्करण कोड में पर तोड़ने के लिए चाहते हैं।

मैं * निक्स सिस्टम पर सॉफ़्टवेयर का विश्लेषण करने के लिए नया हूं और कुछ पॉइंटर्स का उपयोग कर सकता हूं। समस्या निवारण के बारे में मुझे और कैसे जाना चाहिए क्यों जीडीबी मेरे ब्रेकपॉइंट्स को नहीं मारा जाएगा? या क्या कुछ प्रमुख है जो मैं सिर्फ देख रहा हूं?

बाइनरी प्रथम हाथ देखने में रुचि रखने वालों के लिए सभी गेम बाइनरी के साथ torrent उपलब्ध है।

उत्तर

2

उत्तर के लिए here देखें। संक्षेप में, ऐसा लगता है कि जीडीबी केवल एचपी-यूएक्स और लिनक्स पर बाल डीबग मोड का समर्थन करता है।

+0

धन्यवाद! इस के लिए नियोजित कार्य-आसपास बस बाइनरी को पैच करना था और माता-पिता को बच्चे के हिस्से को निष्पादित करना था। मेरे लिए, सोने के लिए कॉल जोड़ने की कोशिश करने से यह आसान है, क्योंकि मैं स्रोत के बिना हूं। लेकिन जो हो रहा था उसका एक स्पष्टीकरण वह था जिसे मैं वास्तव में ढूंढ रहा था। एक बार फिर धन्यवाद। – mrduclaw

+0

@ निकोलई टूटी हुई लिंक – nouveau