लिनक्स पर "ट्रस-टी" और "ट्रस-यू" के बराबर?


12

क्या लिनक्स पर सोलारिस उपयोगिता का क्या -Tऔर -Uविकल्प है, इसके बराबर है truss

वे एक सिस्टम कॉल ( -T) या लाइब्रेरी फ़ंक्शन ( -U) को निर्दिष्ट करने के लिए हैं जो कि ट्रेस किए गए एप्लिकेशन द्वारा कॉल किए जाने पर इसे रोकने का कारण होगा।

या फिर, अन्यथा, मैं चाहता हूं कि किसी भी प्रक्रिया को एक ट्रेस एप्लिकेशन द्वारा शुरू किया जाए (जैसे कि SIGSTOP द्वारा मार दिया गया) जैसे ही यह एक दिया गया सिस्टम कॉल या किसी दिए गए साझा लाइब्रेरी फ़ंक्शन कॉल करता है।

straceऔर ltraceलिनक्स पर सोलारिस के बहुत से फीचर दिए गए हैं truss, लेकिन वे ऐसा नहीं करते हैं।

उदाहरण के लिए:

truss -f -T open cmd

जैसा होगा strace -f cmd, सिवाय इसके कि प्रक्रिया को क्रियान्वित करता है, तो cmdया उसके वंश के किसी भी करता है किसी भी openप्रणाली अधिकार, इसे तुरंत बंद कर दिया जा सकता है (और मैं इसे बाद में मेरी सुविधा के अनुसार फिर से शुरू कर सकते हैं)

कुछ मामलों में, मैं इस्तेमाल कर सकते हैं gdbकी catch syscall, लेकिन मैं एक समाधान है कि आसानी से कांटे का पालन करें और सभी काँटेदार प्रक्रियाओं के लिए यह कर जारी रखने के लिए और जाने के बाद भी यह कर रही पर रख सकते हैं के लिए देख रहा था execveरों।

मुझे लगता है कि कुछ उपयोगिता को याद करते हुए एक ही कार्यक्षमता, यहां तक ​​कि एक (या उसी उपयोगिता के लिए विकल्प) को याद करते हुए, जैसे कि कुछ syscall की कुछ घटनाओं के बीच एकल-चरण अनुप्रयोगों के लिए, लेकिन मेरी स्मृति मुझे विफल हो रही है, मुझे भी यकीन नहीं हो सकता है यह लिनक्स पर था।


1
वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन gdb में कांटे के अनुसरण के लिए कुछ विकल्प हैं, यह सिर्फ एक निष्पादक कुंजी नहीं है। यह अभी भी एक समय में केवल एक ही प्रक्रिया करता है, हालांकि, जो शायद एक सौदा ब्रेकर है यदि आप स्ट्रेस जैसी कार्यक्षमता की तलाश कर रहे हैं, लेकिन मुझे लगा कि मैं इसे केवल मामले में उल्लेख करूंगा।
ब्राचली

@JoelDavis, धन्यवाद। और ऐसा लगता है कि यह निष्पादन के बाद भी अनुसरण कर सकता है, ( follow-exec-mode), मैं इसके साथ प्रयोग कर रहा हूं। सवाल का कड़ाई से जवाब नहीं देता है, लेकिन मुझे जो भी चाहिए उसके लिए पर्याप्त हो सकता है।
स्टीफन चेज़लस

यदि मैं आपके प्रश्न को समझता हूँ तो आप एक विशिष्ट संकेत मिलने तक ट्रेस करने का तरीका खोज रहे हैं और फिर ट्रेस करना बंद कर दें, रुकें नहीं या उस एप्लिकेशन को मारें जिसे आप किसी भी तरह से ट्रेस कर रहे हैं, है ना?
स्लम

@ एसएलएम, नहीं, मैं चाहता हूं कि एक ट्रेस एप्लिकेशन द्वारा शुरू की गई प्रक्रिया को रोका जाए (जैसे कि SIGSTOP द्वारा मार दिया गया) जैसे ही यह एक दिया गया सिस्टम कॉल करता है। मैंने सोलारिस trussमैनपेज का लिंक जोड़ा है ।
स्टीफन चेज़लस

मुझे यह सुनिश्चित करने दें कि मैं सही तरीके से समझ सकूं। आप एक प्रक्रिया को रोकने का एक तरीका चाहते हैं जब यह एक विशिष्ट सिस्टमकॉल बनाता है। क्या वो सही है?
स्पार्टिसिव्स

जवाबों:


3

मेरी जानकारी के सर्वश्रेष्ठ के साथ ऐसा नहीं किया जा सकता है strace, जो ptraceफ़ंक्शन आंतरिक रूप से उपयोग किया जाता है SIGSTOPया SIGINTकॉल पर।

संपादित करें:

मैंने इस सरल समाधान को मिनिस्ट्रेस में डाला , इसलिए किसी भी कोडिंग की आवश्यकता नहीं है।

मेरा प्रस्तावित समाधान, यदि स्ट्रेस की सभी कार्यक्षमता की आवश्यकता नहीं है, तो मिनिस्ट्रेस को संशोधित करना होगा - जो मैंने यहां पाया कि कोड की 70 लाइनों में खुद को एक स्ट्रेस लिखें

एक शॉट कार्यक्रम में आप निम्नलिखित कोड से पहले दो लाइनें जोड़ सकते हैं:

if (wait_for_syscall(child) != 0) break;

छद्म कोड:

if(syscall == SYS_write)
    do {
        char str[4];
        gets(str);  // waits until enter to continue    
    } while(0);

मैंने इनमें से किसी को भी नहीं छेड़ा है, ये अंतिम चरण आपके लिए शेष हैं।


धन्यवाद। यह काम करता है और यह लिंक बहुत उपयोगी है। हालाँकि (कोड की कुछ पंक्तियों में समझ में आता है), यह gdb / स्ट्रोस को डिकोडिंग नहीं करता है, इसलिए यह मेरे उद्देश्य के लिए उपयोगी नहीं होगा। यह दिखाता है कि यह आसानी से हो गया है। मैं अंत में जीडीबी के लिए गया था लेकिन ऐसा लग रहा है कि उस सुविधा के लिए पैचिंग स्ट्रीप अपेक्षाकृत आसान होगी। प्रश्न को खुला छोड़ते हुए मुझे संदेह है कि ऐसा करने के लिए एक मौजूदा आदेश है। जब मुझे समय मिल गया है, तो मैं अजगर-विद्या को देखूंगा।
स्टीफन चेजालस

आपका स्वागत है! मैं कार्यान्वयन को बढ़ाने में थोड़ा जंगली हो गया, इसलिए आईडी और नाम से सिस्केल का संदर्भ देना संभव होगा। यह फिर से ptrace के साथ खेलने में मजेदार था।
डैनियल डब्ल्यू। क्रॉम्पटन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.