इसके बजाय gdbtui
या जिसके ctrl+x
तहत gdb
स्क्रीन के शीर्ष पर स्रोत कोड दिखाता है मैं अपने विम संपादक में यह देखना चाहूंगा जो कि टैब, और बफ़र्स के बीच कूद जाएगा।
मैं यह कैसे कर सकता हूँ?
इसके बजाय gdbtui
या जिसके ctrl+x
तहत gdb
स्क्रीन के शीर्ष पर स्रोत कोड दिखाता है मैं अपने विम संपादक में यह देखना चाहूंगा जो कि टैब, और बफ़र्स के बीच कूद जाएगा।
मैं यह कैसे कर सकता हूँ?
जवाबों:
मेरे द्वारा आजमाए गए सभी प्लगइन्स में, मैंने ConqueGDB को सबसे अच्छा तरीका पाया । ConqueGDB, Conque Shell का उपयोग विम के अंदर एक इंटरैक्टिव शेल को एम्बेड करने के लिए करता है , जिसका उपयोग GDB द्वारा किया जाता है।
ConqueGDB के साथ वर्कफ़्लो में GDB टर्मिनल पर GDB कमांड दर्ज नहीं है, आप vim स्रोत कोड पर शॉर्टकट का उपयोग करते हैं। लेकिन यदि आप चाहते हैं कि अधिक उन्नत आदेशों के लिए, या संपूर्ण डीबग सत्र देखने के लिए स्क्रॉल करते हुए आप GDB प्रांप्ट का उपयोग जारी रख सकते हैं।
कुछ ConqueGDB डिफ़ॉल्ट मैपिंग, उदाहरण के लिए:
ध्यान दें कि एक GDB 'प्रिंट पंक्ति' को जारी करने के लिए vim कर्सर लाइन का उपयोग कैसे किया गया है, कोड का वर्तमान निष्पादन दूसरी लाइन (14) में है और लाइन 10 पर एक विराम बिंदु है।
उदाहरण के लिए Vundle के साथ स्थापित करने के लिए:
Plugin 'vim-scripts/Conque-GDB'
मैं इन प्लगइन विकल्पों का उपयोग करता हूं:
let g:ConqueTerm_Color = 2 " 1: strip color after 200 lines, 2: always with color
let g:ConqueTerm_CloseOnEnd = 1 " close conque when program ends running
let g:ConqueTerm_StartMessages = 0 " display warning messages if conqueTerm is configured incorrectly
leader
मतलब है?
<leader>r
मेरे कंप्यूटर पर <kbd> \ </ kbd> + <kbd> r </ kbd> का अर्थ है। विम मैनुअल में इसके लिए एक प्रविष्टि है::help leader
<Leader>b
:। यह कर्सर स्थिति पर एक ब्रेकपॉइंट सेट करता है। हालाँकि, यह टॉगल नहीं है, इसलिए आप इसे फिर से निकालने के लिए उपयोग नहीं कर सकते। बल्कि, आपको GDB प्रॉम्प्ट पर 'स्पष्ट' लिखना होगा।
आपके पास कई प्लगइन्स हैं जो gdb को एकीकृत करते हैं।
और एक प्लगइन भी है जो lldb (LLVM प्रोजेक्ट से) को एकीकृत करता है
ऐसा लगता है कि ब्रैम वर्तमान में (सितंबर 2017) जीडीबी के एकीकरण पर काम कर रहा है जो नई :terminal
सुविधा के लिए विम धन्यवाद के भीतर से है । इसका उपयोग करने के लिए, हमें termdebug
पैकेट (साथ :packadd termdebug
) लोड करने की आवश्यकता है , फिर हम एक vim विंडो में gdb कंसोल को शुरू करने में सक्षम होंगे :TermDebug (+options)
। IMO, हम इसे VDB के तहत GDB एकीकरण का भविष्य मान सकते हैं।
GDB edit
कमांड
कमांड का उपयोग करके वर्तमान लाइन पर एक संपादक खोलता है:
$EDITOR +<current-line> <current-file>
डिफ़ॉल्ट editor
है ex
, लेकिन प्रारूप को vim
भी समझता है +<current-line>
।
जब आप संपादक को छोड़ देते हैं, तो आप वापस आ जाते हैं gdb
।
यह आपको स्रोत को स्वतंत्र रूप से ब्राउज़ करने की अनुमति देता है और विशेष रूप से शक्तिशाली है यदि आपके पास ctags
एकीकरण है।
यह एक गरीब आदमी का बिल्ट-इन वन तरीका है gdb to vim इंटीग्रेशन: मुख्य अनुपलब्ध चीज विम से ब्रेकप्वाइंट सेट कर रही है।
edit
और केंद्र
edit
स्रोत के चारों ओर डिफ़ॉल्ट रूप से Vim केंद्र नहीं करता है, इसलिए मैंने एक पायथन स्क्रिप्ट बनाई है जो इसे करती है: https://stackoverflow.com/questions/43557405/how-to-open-the-current-file-at-the-the वर्तमान लाइन में एक-पाठ संपादक से-gdb / 43557406 # 43557406
ब्रेकपॉइंट कमांड क्लिपबोर्ड हेल्पर को
यह vim कमांड एक ब्रेकपॉइंट निर्दिष्ट करता है जो टाइप का होता है:
b <file-path>:<line-number>
क्लिपबोर्ड पर:
command! Xg :let @+ = 'b ' . expand('%:p') . ':' . line('.')
तो आप बस में पेस्ट कर सकते हैं gdb
।
यह ब्रेकपॉइंट्स सेट करने में आसानी के लिए gdb इंटीग्रेशन के लिए एक गरीब आदमी की विम है।
इसे भी देखें: https://stackoverflow.com/questions/3536600/do-you-debug-c-code-in-vim-how
हालांकि तकनीकी रूप से नहीं। cgdb, gdb का एक शाप संस्करण है जिसमें vim-like कीबाइंडिंग होती है। यह वर्षों के लिए मेरा गोटो डिबगर है: