2012-10-19 12 views
14

लापता स्रोत कोड (या संभवतः एक्सकोड के भीतर समान कार्यक्षमता) खोजने के लिए खोज पथ जोड़ने के लिए gdb "निर्देशिका" के एलएलडीबी समकक्ष के लिए खोज रहे हैं?एलएलडीबी जीडीबी "निर्देशिका" कमांड के बराबर है?

अग्रिम धन्यवाद!

उत्तर

23

target.source-map सेटिंग आपको डीबग सत्र में a => b पथ remappings की एक श्रृंखला को परिभाषित करने की अनुमति देता है। यह gdb dir कमांड के समान नहीं है, जो बेस नाम से स्रोत फ़ाइलों को खोजने के लिए निर्देशिकाओं की एक सूची है, लेकिन आप source-map के साथ समान समस्याओं को हल कर सकते हैं।

% cd /tmp 
% echo 'int main() { }' > a.c 
% clang -g a.c 
% mkdir hide 
% mv a.c hide/ 
% xcrun lldb a.out 
(lldb) settings set target.source-map /tmp /tmp/hide 
(lldb) l -f a.c 
    1 int main() { } 
(lldb) br se -n main 
Breakpoint created: 1: name = 'main', locations = 1 
(lldb) r 
Process 21674 launched: '/private/tmp/a.out' (x86_64) 
Process 21674 stopped 
* thread #1: tid = 0x1f03, 0x0000000100000f49 a.out`main + 9 at a.c:1, stop reason = breakpoint 1.1 
    #0: 0x0000000100000f49 a.out`main + 9 at a.c:1 
-> 1 int main() { } 
(lldb) 

इस सेटिंग, lldb में टाइप set list target.source-map के बारे में अधिक जानकारी के लिए: यहाँ एक उदाहरण है जहाँ मैं संकलन के बाद एक छिपा निर्देशिका में एक स्रोत फ़ाइल के लिए कदम है। fwiw आपने इसे apropos path करके lldb में खोजा होगा जो नाम/विवरण में पथ शब्द वाले सभी आदेश/सेटिंग्स सूचीबद्ध करेगा। यह देखकर कि इस नाम से एक सेटिंग थी, आप सेटिंग की सूची देखने के लिए settings list करेंगे और यह पता लगाएंगे कि यह target. के तहत दायर किया गया है।

+0

जेसन, उपयोग को स्पष्ट करने और एक अच्छा आत्म-व्याख्यात्मक उदाहरण की आपूर्ति के लिए धन्यवाद! ("एक तस्वीर हजारों शब्दों के लायक है" ;-) आशा है कि आप इस उदाहरण का उपयोग "जीडीबी टू एलएलडीबी कमांड मैप" (http://lldb.llvm.org/lldb-gdb) को अपडेट करने के सुझाव के रूप में नहीं करते हैं। एचटीएमएल)।/सादर, लार्स। – IODEV

+0

हाँ, एकमात्र समस्या यह है कि target.source-map वास्तव में डीआईआर जैसा ही नहीं है; यह gdb के पथनाम-प्रतिस्थापन सेटिंग के बराबर है। पथनाम-प्रतिस्थापन का उपयोग दृश्यों के पीछे एक्सकोड द्वारा किया गया था लेकिन उपयोगकर्ताओं को आमतौर पर इसके बारे में पता नहीं था। हमें किसी बिंदु पर ldb को gdb के dir कमांड के समान कमांड जोड़ने की आवश्यकता होगी। –

+3

इस जवाब से मुझे याद करने वाली एकमात्र चीज के बारे में, यह पता लगाने के लिए कि स्रोत बनाने के दौरान किस स्रोत पथ का उपयोग किया गया था। अगर मैं रिमोट मशीन से कनेक्ट करता हूं, तो मुझे अक्सर पता नहीं होता कि किस मार्ग का उपयोग किया गया था, मुझे आशा है कि मुझे एलएलडीबी से यह कहने के लिए कहा जा सकता है कि वह मुझे स्रोत फाइलों को ढूंढना चाहता है, इसलिए मैं इसे सही ढंग से स्रोत-मानचित्र कर सकता हूं। – lundman

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