2013-02-16 12 views
7

सभी कॉस्कोप ट्यूटोरियल मुझे ऑनलाइन बात मिली, जिसमें विस्को और एमएक्स जैसे संपादकों में प्रतीकों की खोज करने के लिए सीएससीओपी के इंटरैक्टिव मोड का उपयोग कैसे किया जाए। लेकिन मुझे लगता है यह टर्मिनल में कोई आदेश जारी करने की तरहसीएससीओपी: कमांड लाइन का उपयोग कर प्रतीक खोजने के लिए सीएससीओपी का उपयोग कैसे करें?

cscope -d -some_options <my symbol> 

कुछ करने के लिए संभव हो जाना चाहिए और मैं stdout में परिणामों की एक सूची देखने के लिए, बजाय ncurse यूआई में प्रवेश के लिए होने के लिए सक्षम होना चाहिए और वहाँ सब कुछ करना । मुझे लगता है कि यह संभव है क्योंकि "केवल" फ्रंटएंड cbrowser अपने TclTK UI में ऐसी चीजें कर सकता है। लेकिन दुर्भाग्य से कोड मेरे बाहर काफी है।

हालांकि, मुझे इस क्षमता के बारे में कोई दस्तावेज नहीं मिला।

क्या मैं सपना देख रहा हूं या ऐसा करने का कोई अनियंत्रित तरीका है?

धन्यवाद!

अद्यतन

कुछ प्रगति: यदि मैं उप-निर्देशिका संरचना के साथ कुछ फ़ाइलों की एक छोटी परियोजना बनाते हैं। फिर rici का जवाब बॉक्स से बाहर काम करता है। एक बड़ी परियोजना के साथ (जटिल फ़ोल्डर संरचना के साथ हजारों फाइलें)। प्रोजेक्ट फ़ोल्डर (मेरी वर्तमान कार्यशील निर्देशिका) की जड़ पर मौजूद एक cscope.out और cscope.files के साथ भी, मुझे एक ही कमांड और एक ही प्रतीक से कुछ भी नहीं मिला। मुझे संदेह है कि कमांड के साथ स्केलेबिलिटी समस्या है। मैंने कमांड

cat cscope.files | xargs cscope -d -L1 <symbol> -i 

का कोई फायदा नहीं हुआ।

अद्यतन

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

मैंने rici के उत्तर को सही के रूप में चिह्नित किया।

+0

मैं उपयोग [ 'grep'] (http : //pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html): 'grep -options * .c' – pmg

+2

लेकिन यह सादा पाठ खोज है। सीएससीओपी अधिक सटीक है। – kakyo

+0

सही, लेकिन कभी-कभी आपको एक फ्लाई को मारने के लिए तोप की आवश्यकता नहीं होती है। – pmg

उत्तर

1

आप पुनरावर्ती खोज के लिए -R संस्करण के साथ cscope कॉल कर सकते हैं।उदाहरण के लिए:

cscope -d -f/path/to/cscope.out -R -L1 some_symbol 

(some_symbol की परिभाषा के लिए खोज)

cscope -d -f/path/to/cscope.out -R -L3 some_symbol 

आप -f विकल्प छोड़ सकते हैं अगर cscope.out स्थित है (सभी स्थानों जहां some_symbol कहा जाता है दिखाता है) वर्तमान कार्य निर्देशिका में।

ध्यान दें कि -R पर उपर्युक्त कॉल अनुक्रमित प्रतीक के लिए शून्य परिणाम उत्पन्न करता है। बहुत पुराने cscope संस्करण -R का समर्थन नहीं करते हैं। उदाहरण के लिए, संस्करण 15.8 ए इसका समर्थन करता है।

-L के लिए संभावित मानों की सूची है:

0: Find this C symbol 
1: Find this definition 
2: Find functions called by this function 
3: Find functions calling this function 
4: Find this text string 
6: Find this egrep pattern 
7: Find this file 
8: Find files #including this file 
9: Find places where this symbol is assigned a value 

-R विकल्प भी जब cscope.out फ़ाइल बनाने, इस्तेमाल किया जा सकता जैसे:

cscope -bR 
15

आप शायद इस लिए देख रहे हैं:

cscope -L1<symbol> 

आप -d रूप में अच्छी तरह इस्तेमाल कर सकते हैं, हालांकि यदि आप फ़ाइलों संशोधित कर रहे हैं, यह अच्छा है cscope यह डेटाबेस है अद्यतन करने के लिए के लिए।

-L का मतलब है, और निम्न अंकों (इस मामले में 1) है, जो भी एक अलग विकल्प के रूप में लिखा गया हो सकता "एक पंक्ति उन्मुख आदेश पर अमल", विशिष्ट आदेश है, जो मैनपेज भ्रमित करने वाले एक कहता है " खेत"। "फ़ील्ड" इंटरैक्टिव सीस्कोप प्रॉम्प्ट द्वारा दिए जाते हैं; मैंने सुविधा के लिए अंक जोड़ा। "यह" उस पाठ को संदर्भित करता है जो अंक का पालन करता है; याद रखें कि यह एक पैटर्न है इसलिए आपको पूर्ण प्रतीक टाइप करने की आवश्यकता नहीं है।

0 Find this C symbol: 
1 Find this function definition: 
2 Find functions called by this function: 
3 Find functions calling this function: 
4 Find this text string: 
5 Change this text string: 
6 Find this egrep pattern: 
7 Find this file: 
8 Find files #including this file: 
+0

मैंने अपनी सीएससीओपी.एट फ़ोल्डर के तहत अपनी लाइन "सीएससीओपी-डी-एल 1 " की कोशिश की। दुर्भाग्य से यह मुझे कुछ भी नहीं दिया। दूसरी ओर, एक ही स्थान पर "cbrowser" को फायरिंग, मैं एक ही क्वेरी जमा कर सकता हूं और यूआई में परिणाम सूचीबद्ध कर सकता हूं। क्या मैं कुछ भूल रहा हूँ? मैंने विकल्प और प्रतीक तर्क के बीच की जगह के साथ और बिना कमांड लाइन की कोशिश की। – kakyo

+0

@kakyo: मैं बस इतना कह सकता हूं कि यह मेरे लिए काम करता है। आपने वास्तव में '<' and '>' टाइप नहीं किया था, है ना? क्या आपने cscope.out को हटाने का प्रयास किया और इसेस्कोप को पुनर्निर्माण करने की अनुमति दी (यानी -d ध्वज का उपयोग किए बिना)? – rici

+0

नहीं, मुझे पता है कि प्रतीक <> स्वयं के साथ नहीं आता है :)। मैंने बस cscope.out को हटाने का प्रयास किया, फिर "स्कोप-एल 1 "। मेरे आश्चर्य के लिए, cscope फ्लाई पर फ़ाइल उत्पन्न नहीं किया था; इसके बजाय, मुझे "सीएससीओपी: कोई स्रोत फाइल नहीं मिली"। क्या ऐसा इसलिए है क्योंकि मेरा कोड cscope.out से संबंधित उप फ़ोल्डरों में था? क्या मुझे उस कमांड में स्रोत फाइल निर्दिष्ट करना है? – kakyo

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