कोड के साथ gdb विभाजन दृश्य


111

मैं सिर्फ gdb में किसी प्रोग्राम को डिबग कर रहा था और किसी तरह मुझे एक नई सुविधा मिली जिसे मैंने पहले कभी नहीं देखा या सुना भी नहीं था, एक विभाजन दृश्य जहां मैं कमांड देने के अलावा कोड को देख और ब्राउज़ कर सकता हूं:

तस्वीर के बारे में क्षमा करें, लेकिन tty में स्क्रीनशॉट नहीं है।

यह क्या है? मैंने क्या किया, या, विशेष रूप से, मैं इस स्प्लिट-स्क्रीन मोड को फिर से कैसे प्राप्त कर सकता हूं? क्या इस विधा का कोई नाम है, या कहीं मैं इसका उपयोग करने के तरीके के बारे में पढ़ सकता हूं?


2
त्वरित संदर्भ के लिए: आप Cx सीए, Cx एक, या Cx A.` देखें में से किसी का उपयोग कर इस मोड से बाहर निकल सकते इस सवाल का
रिचर्ड

जवाबों:


95

इसे टीयूआई (कोई मजाक नहीं) कहा जाता है। उदाहरण के लिए gdbtuiया के साथ प्रारंभ करें gdb -tui...


11
आप सामान्य रूप से layout nextशुरू करने के बाद भी उपयोग कर सकते हैंgdb
खाविम

87

आप इसे पुश ctrl+ xऔर ctrl+ द्वारा गतिशील रूप से ट्रिगर कर सकते हैं a


धन्यवाद @ user146043, यह एकमात्र तरीका है यदि आप स्क्रीन को उसी समय चला रहे हैं जैसे कि ctrl-a एक तरीका है स्क्रीन कमांड शुरू करने का!
ओलिक 79

लगता है कि आप उस कॉम्बो के साथ भी बंद हो सकते हैं!
निक डेस्लानिएर्स

40

इसके दो वैरिएंट हैं।

  1. केवल कोड प्रेस देखने के लिए

CTRL Xएक साथ दबाएं और फिर 1

  1. स्रोत और विधानसभा दोनों को देखने के लिए

'CTRL' 'X' को एक साथ दबाएँ और फिर '2'

http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html

कोड और असेंबली के साथ दृश्य का स्क्रीन शॉट। यहां छवि विवरण दर्ज करें

इसके अलावा इस अद्भुत Github परियोजना की जाँच करें।


Github प्रोजेक्ट लिंक साझा करने के लिए बहुत धन्यवाद। यह बहुत भयानक है :)
विवेक अग्रवाल

16

आप इसे कमांड "-" (डैश) का उपयोग करके gdb शेल से भी शुरू कर सकते हैं। यकीन नहीं कि गतिशील रूप से इसे बंद कैसे करें।


यह उपयोग करने और याद रखने में सबसे आसान लगता है।
सियुआन रेन

2
आप Cx Ca, Cx a, या Cx A. में से कोई भी करके बाहर निकल सकते हैं। देखें stackoverflow.com/questions/14147117/…
dmonopoly

15

GDB डैशबोर्ड

https://github.com/cyrus-and/gdb-dashboard

GDB डैशबोर्ड आधिकारिक GDB Python API का उपयोग करता है और जब आप GDB को रोकना चाहते हैं, तो वह जानकारी प्रिंट करता है next, जैसे कि देशी displayकमांड

बनाम टीयूआई:

  • अधिक मजबूत, क्योंकि यह सिर्फ एक अधिक जादुई शाप की स्थिति पर शेल डालने के बजाय प्रिंट करने के लिए प्रिंट करता है, जैसे:

  • अजगर से अत्यधिक विन्यास: आप यह चुन सकते हैं कि आप क्या आउटपुट करना चाहते हैं और प्रत्येक अनुभाग कितना बड़ा है, यह इस बात पर निर्भर करता है कि आप क्या डिबगिंग कर रहे हैं।

    सबसे उपयोगी विचार पहले से ही लागू हैं: स्रोत, असेंबली, रजिस्टर, स्टैक, मेमोरी, थ्रेड्स, एक्सप्रेशन ... लेकिन जीडीबी पायथन एपीआई पर उजागर होने वाली किसी भी जानकारी के साथ इसे बढ़ाना आसान होना चाहिए।

    टीयूआई केवल दो स्रोत, विधानसभा और रजिस्टर दिखाने की अनुमति देता है और वह यह है। जब तक आप इसे संशोधित नहीं करना चाहते, तब तक सी स्रोत कोड ;-)

यहां छवि विवरण दर्ज करें

मेरा मानना ​​है कि GDB को बॉक्स से बाहर की तरह एक सेटअप के साथ जहाज करना चाहिए और डिफ़ॉल्ट रूप से चालू करना चाहिए, यह उस तरह से अधिक उपयोगकर्ताओं को आकर्षित करेगा।

ओह, और मुख्य डेवलपर, एंड्रिया कार्डासी , बहुत ही संवेदनशील और भयानक है। बड़ा कुदोस।

यह भी देखें: इंटरैक्टिव डीबगिंग के दौरान gdb आउटपुट को कैसे हाइलाइट और कलर करें?


2
यह बताने के लिए पर्याप्त शब्द नहीं हैं कि यह कितना भयानक है। धन्यवाद :)
unresolved_external

11

layoutजीडीबी में एक कमांड के रूप में टाइप करें और विभाजन विंडो दिखाई जाएगी।


5

जब GDB मानक मोड में होता है, तो उपयोग winकरना स्वचालित रूप से TUI मोड में स्विच हो जाएगा।
TUI मोड के लिए अन्य कमांड:

  • info win
    सभी प्रदर्शित खिड़कियों के आकार को सूचीबद्ध करें और दें।
  • focus next | prev | src | asm | regs | split
    नामित विंडो पर फ़ोकस सेट करें। यह कमांड सक्रिय विंडो को बदलने की अनुमति देता है ताकि स्क्रॉलिंग कीज़ दूसरी विंडो पर प्रभावित हो सकें।

यहां पढ़ें मदद के लिए फॉर्म


2

GDB के लिए इंटरफ़ेस टूल भी है जिसे cgdb कहा जाता है। यहां तक ​​कि कुछ रंग हाइलाइटिंग के साथ। "ESC" कोड दृश्य में स्विच करने के लिए, "i" जीडीबी पर वापस स्विच करने के लिए

cgdb


1

tui मोड स्पष्ट रूप से emacs से प्रेरित था - जब मैंने ^ ^ को मारा तो मुझे दुर्घटना से पता चला, जो emacs में विभाजित खिड़कियों के बीच स्विच करता है - मैं कभी-कभी उस अनुपस्थित-दिमाग को हिट करता हूं जब मुझे क्या करना चाहिए, एक अलग कार्यक्रम में बदल रहा है। वैसे भी, अभी तक उल्लेखित एक अन्य विशेषता की ओर जाता है, कि आप कर्सर को कोड विंडो (जहां आप स्क्रॉल कर सकते हैं) से कमांड लाइन तक ले जा सकते हैं, या इसके विपरीत, ^ Xo के साथ।


स्पष्ट रूप से जीएनयू के अधिकांश कार्यक्रमों में कीबाइंडिंग जैसे क्षार होते हैं, मुख्य रूप से संगतता कारणों से। मुझे पता है कि बैश में एक vi मोड है, लेकिन यह emacs मोड के रूप में लगभग अच्छा नहीं है।
klaus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.