2015-06-25 11 views
11

में किसी प्रोग्राम की सिस्टम कॉल का पता लगाने के लिए कैसे करें द्वारा बनाई गई सिस्टम कॉल का पता लगाने के लिए कमांड to debug some performance issues खोजें, हालांकि मैक ओएस एक्स योसमेट पर यह कैसे करना है, यह पता नहीं लगा सका। मैं स्ट्रेस फ्रीबीएसडी पर क्या करता है, उसी तरह मनमाने ढंग से प्रोग्राम के लिए सिस्टम कॉल का पता लगा सकता हूं? मैं विशेष रूप से फाइल सिस्टम से संबंधित कॉल का पता लगाने में रूचि रखता हूं।मैक ओएस एक्स

+2

के लिए * strace OSX * मुझे [इस वर्ष चार साल ब्लॉग पोस्ट] दे दी है एक त्वरित खोज (https:

आप अपने घर निर्देशिका में निष्पादन की एक प्रति बनाने और नकल का पता लगाने के द्वारा इस बायपास कर सकते हैं : //opensourcehacker.com/2011/12/02/osx-strace-equivalent-dtruss-seeing-inside-applications-what-they-do-and-why-they-hang/)। एक ही खोज का उपयोग करके अन्य विकल्पों को ढूंढना आसान होना चाहिए। –

+0

@ जोचिमपिलबोर्ग नाइस पॉइंट। मैं एक और तरीका चला गया, * apropos trace * से शुरू हुआ और उससे खोज रहा था। मैंने * dtruss * और * dtrace * को अनदेखा किया क्योंकि मुझे मिले सभी परिणामों * डी * भाषा के लिए एक ट्रेस उपयोगिता के बारे में थे। –

उत्तर

11

आप

sudo dtruss find ~/repo -depth 2 -type d -name '.git' 

कि उपयोगिता के manual page में तरह dtruss का उपयोग आप अपनी आवश्यकताओं के उपकरण के उपयोग के अनुरूप बनाने के लिए मदद मिलेगी कर सकते हैं।

+7

dtruss ने तब काम किया (जून '15) लेकिन एल कैपिटन के सिस्टम इंटीग्रटी प्रोटेक्शन रीमेम द्वारा तोड़ दिया गया था। – Olsonist

+1

@ ऑलसनिस्ट डीट्रेस के साथ एक ही समस्या: 'वर्तमान सुरक्षा प्रतिबंध (रूटलेस सक्षम) एक निष्पादन योग्य को जोड़ने से रोकता है जो [com.apple.security.get-task-allow] एंटाइटेलमेंट के साथ हस्ताक्षरित नहीं है – Nakilon

+1

एसआईपी को अक्षम करना संभव है https://developer.apple.com/library/content/documentation/Security/Conceptual/System_Integrity_Protection_Guide/ConfiguringSystemIntegrityProtection/ConfiguringSystemIntegrityProtection.html – mttrb

6

मैकोज़ के वर्तमान संस्करणों के तहत, एसआईपी द्वारा कवर किए गए पथों के तहत निष्पादन योग्य (जैसे /usr/bin) का पता लगाया नहीं जा सकता है।

cp /usr/bin/find find 
sudo dtruss ./find … 
+0

निष्पादन योग्य की प्रतिलिपि बनाने के बाद मेरे मामले में बग जो मैं डीबग करना चाहता था बंद हो रहा था .. ( – Nakilon

+0

शायद मेरी बग वास्तव में एसआईपी से संबंधित है इसलिए यह भी एक सफलता है । – Nakilon