Erlang 21 - 3. SystemTap and Erlang/OTP

3 SystemTap और Erlang / OTP




erlang

3 SystemTap और Erlang / OTP

३.१ परिचय

SystemTap लिनक्स के लिए DTrace है। वास्तव में एरलैंग के सिस्टमटैप सपोर्ट को सिस्टमटैप के डीटीएआर कम्पेटिबिलिटी लेयर का उपयोग करके बनाया गया है। Erlang DTrace सपोर्ट के परिचय के लिए $ERL_TOP/HOWTO/DTRACE.md

3.2 आवश्यक वस्तुएँ

  • UTRACE समर्थन के साथ लिनक्स कर्नेल

    अपने वर्तमान कर्नेल में UTRACE सहायता के लिए जाँच करें:

    # grep CONFIG_UTRACE /boot/config-`uname -r`
    CONFIG_UTRACE=y

    फेडोरा 16 को यूटीआरईएससी के लिए जाना जाता है, अधिकांश अन्य लिनक्स वितरणों के लिए एक कस्टम बिल्ड कर्नेल की आवश्यकता होगी। अतिरिक्त आवश्यक पैकेज के लिए फेडोरा के सिस्टमटैप प्रलेखन की जांच करें (जैसे कर्नेल डिबग सिंबल)

  • सिस्टमटैप> 1.6

    इसे लिखने का समय, सिस्टमटेप का नवीनतम जारी संस्करण 1.6 संस्करण है। Erlang के DTrace सपोर्ट के लिए एक MACRO की आवश्यकता होती है जिसे उस रिलीज़ के बाद पेश किया गया। तो या तो एक नई रिलीज़ प्राप्त करें या अपने आप से git से SystemTap का निर्माण करें (देखें: http://sourceware.org/systemtap/getinvolved.html)

३.३ भवन एर्लांग

SystemTap समर्थन के साथ Erlang को कॉन्फ़िगर और निर्माण करें:

# ./configure --with-dynamic-trace=systemtap + whatever args you need
# make

3.4 परीक्षण

SystemTap, DTrace के विपरीत, यह जानना आवश्यक है कि यह किस बाइनरी को ट्रेस कर रहा है और ट्रेसिंग शुरू करने से पहले उस बाइनरी को पढ़ने में सक्षम होना चाहिए। आपकी जांच लिपि को सही बीम एमुलेटर का संदर्भ देना है और स्टैप को उस बाइनरी को खोजने में सक्षम होने की आवश्यकता है। उदाहरण "बीम" के लिए लिखे गए हैं, लेकिन अन्य संस्करण जैसे "बीम.एसपीपी" या "बीम.डेबग.एसपीपी" मौजूद हो सकते हैं (आपके कॉन्फ़िगरेशन के आधार पर)। सुनिश्चित करें कि आप या तो जांच में बाइनरी के पूर्ण पथ को निर्दिष्ट करते हैं या आपका "बीम" बाइनरी खोज पथ में है।

सभी उपलब्ध जांच इस तरह सूचीबद्ध की जा सकती हैं:

# stap -L 'process("beam").mark("*")'

या:

# PATH=/path/to/beam:$PATH stap -L 'process("beam").mark("*")'

इस तरह dtrace.so NIF पुस्तकालय में जांच:

# PATH=/path/to/dtrace/priv/lib:$PATH stap -L 'process("dtrace.so").mark("*")'

3.5 रनिंग सिस्टमटैप स्क्रिप्ट

अपने बीम संस्करण के लिए प्रक्रिया ("बीम") को समायोजित करें और स्क्रिप्ट को चल रहे "बीम" उदाहरण में संलग्न करें:

# stap /path/to/probe/script/port1.systemtap -x <pid of beam>