gdb

2012-05-10 11 views
5

के साथ xv6 पर उपयोगकर्ता-कोड डिबगिंग करना मैं एक ओएस क्लास कर रहा हूं जो xv6 पर आधारित है और मैंने एक प्रोग्राम लिखा है जिस पर इसे चलाने की आवश्यकता है।gdb

मुझे पता है कि मैं make qemu-gdb के साथ कर्नेल कोड डीबग कर सकता हूं लेकिन मुझे यकीन नहीं है कि मेरे अपने उपयोगकर्ता प्रोग्राम को डीबग कैसे करें।

आइए कहें कि मैं cat डीबग करना चाहता हूं, मैं ऐसा करने के लिए कैसे जाऊं?

धन्यवाद

पीएस क्या कोई एक्सवी 6 टैग नहीं है? क्या यह प्रश्न यहां भी जाना चाहिए?

+0

': फ़ाइल cat',': मुख्य तोड़ने ', 'रन' कुछ मिलता है? – shevski

+0

ठीक है, अब मैं वास्तव में बेवकूफ महसूस करता हूं क्योंकि मुझे यकीन था कि मैंने कोशिश की थी। लेकिन अब मुझे लगता है कि यह हो सकता है कि मैंने इसके बजाय 'लोड' की कोशिश की। धन्यवाद! मैंने इसे हर जगह ऑनलाइन देखा, यहां तक ​​कि कुछ लोगों को ईमेल किया, कोई भी मुझे यह नहीं बता सकता ... (उत्तर और मैं स्वीकार करूंगा।) –

उत्तर

5

file cat, break main, continue

अर्द्ध संदर्भ running and debugging xv6

+0

': 'की आवश्यकता नहीं है, लेकिन यह काम करता है! –

+0

खेद vim अंकन – shevski

+0

जब मैं इसे करने की कोशिश मैं करने के लिए की जरूरत 'फ़ाइल _cat मुख्य CONTINUE' तोड़ने इसका कारण यह है _cat इस gdb में चलाया जाता है मेजबान वैसे पर फ़ाइल का नाम है खिड़की (तो आप qemu-gdb बनाते हैं, फिर एक और विंडो में आपने gdb कर्नेल चलाया है)। –

5

xv6 उच्च-स्तरीय निर्देशिका से:

  1. भागो डिबग मोड में एमुलेटर (कोई X11 कल्पना करते हुए): make qemu-nox-gdb

  2. अन्य टर्मिनल में बस डीबगर चलाएं साथ गिरी प्रतीकों लोड हो रहा है: gdb kernelयह महत्वपूर्ण है, अन्यथा डिबगर गिरी और और उपयोगकर्ता कार्यक्रम प्रतीकों के बीच उलझन में हो जाएगा gdb इंटरफ़ेस रन से उदाहरण main()

  3. के लिए,: (gdb) target remote localhost:26000 जहां 26000 टीसीपी है पोर्ट जो अंत में चरण # 1 रिपोर्ट (यह बदल सकता है)।

  4. लोड के साथ (gdb)file user_program

  5. प्लेस एक ब्रेकपाइंट (gdb) break main और उपयोगकर्ता कार्यकारी (gdb) continue

  6. आदि के साथ जारी रखने के लिए ...