2013-07-05 11 views
7

मेरा एकल सबसे अधिक उपयोग किया गया gdb कमांड l है n के बाद l -एलएलडीबी: सूची स्रोत कोड

मैं एलएलडीबी में इसे कैसे प्राप्त कर सकता हूं?

मैं कहीं भी कोड देखने के लिए कुछ लाइन नंबर टाइप करने से संतुष्ट हूं। टर्मिनल में चर के एक टन डंप करने के बाद, मैं देखना चाहता हूं कि मैं कोड में कहां हूं। और मैं l - का उपयोग करने के लिए वापस जाने के लिए उपयोग करता था, क्योंकि मैं कहां हूं, l पर कॉल मुझे नीचे स्क्रॉल करेगा (lldb यह भी करता है, लेकिन महत्वपूर्ण रूप से l - का जवाब नहीं देता है)।

शायद मुझे कुछ याद आ रहा है और कुछ प्रकार का "मोड" मैं इसे डाल सकता हूं, जो एक अलग बफर में संबंधित स्रोत स्थान को हर समय में दिखाएगा। यह अच्छा होगा, लेकिन मैं इसके लिए भी नहीं पूछ रहा हूं।

उत्तर

15

एक्सकोड 4.6 में, एलएलडीबी l उपनाम source list के लिए एक साधारण शॉर्टकट है।

पेड़ स्रोतों के शीर्ष में, यह जीडीबी की तरह व्यवहार करने के लिए बेहतर किया गया है। आप source/Interpreter/CommandInterpreter.cpp को देखें, तो http://lldb.llvm.org/ पर अधिक आप देखेंगे कि l अब इन मामलों के साथ एक नियमित अभिव्यक्ति आदेश उर्फ ​​है:

if (list_regex_cmd_ap->AddRegexCommand("^([0-9]+)[[:space:]]*$", "source list --line %1") && 
    list_regex_cmd_ap->AddRegexCommand("^(.*[^[:space:]])[[:space:]]*:[[:space:]]*([[:digit:]]+)[[:space:]]*$", "source list --file '%1' --line %2") && 
    list_regex_cmd_ap->AddRegexCommand("^\\*?(0x[[:xdigit:]]+)[[:space:]]*$", "source list --address %1") && 
    list_regex_cmd_ap->AddRegexCommand("^-[[:space:]]*$", "source list --reverse") && 
    list_regex_cmd_ap->AddRegexCommand("^-([[:digit:]]+)[[:space:]]*$", "source list --reverse --count %1") && 
    list_regex_cmd_ap->AddRegexCommand("^(.+)$", "source list --name \"%1\"") && 
    list_regex_cmd_ap->AddRegexCommand("^$", "source list")) 
इन मामलों के साथ

, तो आप इस तरह के व्यवहार को मिल जाएगा:

दिखाएँ वर्तमान फ्रेम :

(lldb) f 
#0: 0x0000000100000f2b a.out`main + 27 at a.c:15 
    12 
    13 
    14 
-> 15  puts ("hi"); // line 15 
    16 
    17  puts ("hi"); // line 17 
    18 } 

शो पिछले दस लाइनों:

(lldb) l - 
    5  
    6  
    7  
    8  
    9  puts ("hi"); // line 9 
    10 
    11 

फ्रेम फ्रेम पर कितना स्रोत संदर्भ प्रदर्शित होता है, यह नियंत्रित करने के लिए आप stop-line-count-after और stop-line-count-before सेटिंग्स का भी उपयोग कर सकते हैं।

ध्यान दें कि आप अपने ~/.lldbinit फ़ाइल में अपना स्वयं का नियमित अभिव्यक्ति कमांड उपनाम बना सकते हैं, जैसा कि शीर्ष-पेड़ lldb के l के समान व्यवहार के साथ है। वाक्यविन्यास और उदाहरण के लिए help command regex देखें।

+0

एचएम। मुझे यकीन नहीं है कि क्यों 'एल -' पहले मेरे लिए काम नहीं किया था। यह अब करता है –

+3

मैं खिलौना स्रोत फ़ाइल के साथ खेल रहा था और मैंने देखा कि अगर मैंने स्रोत फ़ाइल के अंत में बार-बार उपयोग किया था, तो 'एल -' फिर से पीछे नहीं लग रहा था। आपने देखा होगा कि यदि आप किसी स्रोत फ़ाइल के अंत के पास थे। –

+0

मैं देखता हूं। यह निश्चित रूप से एक कष्टप्रद बग है लेकिन मुझे खुशी है कि यह ज्यादातर समय काम करता है। –

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