بازی پازل, جعبه سیاه, "شبیه سازی تیراندازی اشعه به یک جعبه سیاه به استنباط مکان از" اتم " پنهان در داخل."گیم پلی می گیرد با استفاده از یک شبکه و با انتخاب سطر و ستون به "شلیک اشعه" از طریق. با هر ضربه یک پرتو می تواند عبور از طریق به طرف دیگر ضربه اتم یا منعکس کردن در جهت های مختلف. هر پرتو و خروجی بعدی سرنخ هایی از محل قرارگیری اتم ها فراهم می کند. البته هدف این است که بفهمیم اتم ها کجا هستند.
قابلیت مشاهده در اکثر زبان های برنامه نویسی مشابه بازی جعبه سیاه است. به جای تیراندازی اشعه را به یک شبکه برای قرار اتم, با این حال, ما به تماشای سیاهههای مربوط کاهش, افشای رد پشته, اشکال زدایی غارنشین, و حدس و گمان را امتحان کنید و پیدا کردن نشت حافظه, تنگناها, و اشکالات هایزن. این کار خسته کننده و خسته کننده است و به هیچ وجه به اندازه بازی پازل سرگرم کننده نیست.
اما مشاهده در اکسیر یک تجربه بسیار متفاوت از "اکثر زبان های برنامه نویسی" است, زیرا اکسیر همراه با مشاهده ساخته شده در. سوالات مانند " چقدر حافظه یک فرایند مصرف است?", "چگونه بسیاری از فرایندهای فرزند می کند پدر و مادر?", و " وضعیت داخلی یک فرایند چه خبر?"همه به راحتی با چند کلید پاسخ داده می شوند.
ابزارهای اساسی
در حالی که استفاده از موارد توصیف شده در باقیمانده این مقاله از داخل ماژول های برنامه شما غیرمعمول نیست, شما به احتمال زیاد از این موارد در رپل استفاده می کنید – چه در حین توسعه و چه در حین تولید. همینطور, شما نیاز به دانستن چگونه برای شروع یک فرایند جدید و یا اتصال به یک موجود. شما همچنین می خواهید به دانستن چند کلید های میانبر ایکس.
شما در حال حاضر باید بدانید که شما می توانید شروع و اتصال یک جلسه ایکس به نرم افزار خود را با ایکس بازدید کنندگان مخلوط . در مورد یک برنامه ققنوس, شما می توانید ایکس اس مخلوط پی اچ پی استفاده.سرور . برای تولید نسخه با استفاده از کارخانه یا مخلوط منتشر شده شما می توانید یک کنسول به نرم افزار در حال اجرا با بن/من _ برنامه از راه دور _ کنسول (کارخانه یا محل تقطیر) و یا بن/من _ برنامه از راه دور (انتشار مخلوط) از دایرکتوری استقرار برنامه خود را وصل کنید.
هنگامی که با فرایندهای, شما نیاز به دانستن فرایند' نام, پید (شناسه فرایند), یا مرجع; گذشته که اغلب با فرایندهای تحت نظارت استفاده می شود. شما هم می توانید یک پید یا یک مرجع با پید ساخت/1,3 و یا کد عکس/1,4 بترتیب. مثلا اگر پید مورد علاقه شما #پید است اما به متغیر اختصاص داده نشده است می توانید موارد زیر را در ایکس انجام دهید:
برای مراجع می توانید کاری مشابه انجام دهید.
ما اغلب فراموش میکنیم که متغیرهایی را به تجربههایی که اجرا میکنیم اختصاص دهیم. به خاطر همین, وی/1 یاور ایکس یک ابزار ارزشمند است. اگر شما یک تابع اجرا بدون اختصاص نتیجه به یک متغیر, شما می توانید بازیابی و اختصاص نتیجه بلافاصله پس از:
اگر خروجی است بیشتر در تاریخ ایکس, فراهم می کند که شاخص تاریخ به پنجم / 1 برای بازیابی که مقدار:
همانطور که می بینید کواترو را از خط اول روی 4 قرار می دهیم تا پید از خط قبلی.
با استفاده از این ابزارهای اساسی در نوک انگشتان ما حاضریم برنامه ها و سیستم های خود را مشاهده کنیم.
یافتن فرایندها
اولین قدم برای یافتن هر راه حلی این است که بدانید مشکل چیست. در مورد رعایت فرایندهای اکسیر دانستن این است که به کدام فرایند نگاه کنیم. ما در حال حاضر می دانیم که چگونه برای ساخت یک پید از ابتدا, در حال حاضر بیایید ببینید که چگونه برای پیدا کردن پید برای فرایندهای ما.
روند.کجا/1
اگر شما به اندازه کافی خوش شانس به دانستن نام روند شما می خواهید برای مشاهده, شما می توانید پید خود را با روند پیدا.کجا/1 . این تابع یک اتم را به عنوان استدلال می گیرد و پید (یا صفر ) فرایند مرتبط را برمی گرداند.
به عنوان مثال, یک جلسه ایکس معمولی اجرا می شود بسیاری از فرایندهای, از جمله ایکس.فضولی و چوب . با کسانی که نام در دست, این یک موضوع ساده برای کشف پد خود را.
حالا که می بینید چقدر ساده است که یک فرایند نامگذاری شده (به عنوان مثال نام ثبت شده) را پیدا کنید می توانید درک کنید که چرا مهم است که نام ها را به فرایندهای ژنراتور خود بدهید. بدون نام, از کجا می توانید شروع به دنبال?
روند.فهرست
اگر شما از نام دقیق فرایند مورد نظر خود اطمینان ندارید می توانید لیستی از تمام فرایندهای در حال اجرا با فرایند دریافت کنید.فهرست / 0 . این تابع تمام پیدهای در حال اجرا را لیست می کند. به خودی خود چندان مفید نیست اما وقتی با توابع دیگر جفت شود در ردیابی فرایندها مفید است.
در اینجا یک مثال از لیست پد همراه با نام ثبت شده خود را در صورت موجود بودن:
بعدا روش بهتری برای سازماندهی این داده ها خواهیم دید اما این نقطه شروع خوبی است.
فرایندهای مرتبط
همیشه اینطور نیست که روندی که دنبال می کنید نامی داشته باشد یا حتی قابل تشخیص باشد. در این موارد ممکن است که توسط فرایند دیگری مرتبط یا نظارت شود. دانستن نام این فرایند می تواند به شما در محدود کردن جستجوی شما کمک کند.
به عنوان مثال, اجازه دهید وانمود یکی از فرایندهای چوب است باعث مشکلات برای ما. اگر ما با استفاده از برای درک مطلب بالا برای پیدا کردن فرایندهای چوب مربوط, ما در بر داشت زیر را ببینید:
اگر مشکلی با هیچ یک از فرایندهای نامبرده برای لاگر نبینیم میتوانیم با نگاه کردن به هر فرایندی که به هم مرتبط هستند یا تحت نظارت هستند یک قدم جلوتر برویم. با توجه به درک ما از سیستم ما ممکن است که چوب حدس می زنم.سرپرست است یا به مرتبط و یا نظارت بر فرایندهای باعث مشکلات ایالات متحده.
از لیست پیدهای قبلی ما می بینیم که پیدهای 101 و 103 دارای نام هستند (و بنابراین قبلا مشاهده شده اند). با این حال, ما در پد نامش ذکر نشده نگاه نمی, 99 و 102. با در دست داشتن این اطلاعات می توانیم تحلیل خود را ادامه دهیم.
هم با ابزارها و هم با توانایی یافتن فرایندهای خاص اکنون می توانیم توجه خود را به تحقیقات معطوف کنیم.
مشاهده فرایندها
مشاهده پذیری, مانند بسیاری از کلمات در این صنعت, یک اصطلاح لود شده است, اشاره به همه چیز از نظارت بر یک تابع فرد و یا فرایند به ردیابی تعاملات خود را با اجزای دیگر در داخل و خارج از سیستم. در حالی که ردیابی است که قطعا یک مولفه مهم برای مشاهده, یکی خود را که سزاوار درمان خود را. در حال حاضر, ما در بازرسی فرایندهای فردی تمرکز.
Process. info/1,2
مفیدترین ابزار برای مشاهده فرایند اکسیر این است Process. info/1,2 . این یک لفاف بسته بندی در اطراف :ارلانگ.فرایند/1,2, و گرداند تعداد زیادی از اطلاعات در مورد هر فرایند داده. برای دیدن منظورم این است که در برابر یک فرایند موجود با Process. info(هر چند ()). اگر جلسه خود را هر چیزی شبیه به من است, خروجی روی صفحه نمایش خود را تجاوز و شاید حتی بافر ترمینال خود را.
حتی اگر Process. info فراهم می کند تعداد زیادی از اطلاعات, همه این است که همیشه مفید. بیایید نگاهی به برخی از قطعات با ارزش تر از اطلاعات بازگشت:
- : لینک ها: لیستی از پد های مرتبط با این روند
- : حافظه: مقدار کل حافظه در بایت برای پردازش مصرف می شود. "این شامل پاسخ پشته, پشته, و ساختارهای داخلی.”
- :پیام _ الن: تعداد پیام ها در صندوق پستی روند.
- : پیام ها: لیستی از پیام ها در صندوق پستی روند.
- :مشاهده شده توسط: لیستی از پد هایی که روند را نظارت می کنند.
- :مشاهده می کند: لیستی از پد های نظارت شده توسط روند.
- :نام ثبت شده: نامی که به روند داده شده است. اگر نامی نداشته باشد یک لیست خالی ( [] ) بازگردانده می شود.
- :وضعیت: وضعیت فعلی از روند. این می تواند به یکی از موارد زیر برسد:
- "خروج"
- "زباله _ جمع کردن"
- "انتظار" (برای یک پیام)
- "در حال اجرا"
- "قابل اجرا" (اماده برای اجرا, اما فرایند دیگری در حال اجرا است)
- "معلق" (به حالت تعلیق در" مشغول " پورت و یا توسط بیف ارلانگ:معلق _ پردازش/1,2)
چون اینها مفیدترین شاخص ها برای یک فرایند هستند, منطقی است که فقط کسانی را که نیاز دارید درخواست کنید. شما می توانید این کار را با نسخه دو استدلالی انجام دهید Process. info.
مستندات ارلانگ برای فرایند اینفو/2 دارای تمام اتم های ممکن است که می توانید به عنوان استدلال منتقل کنید.
ماژول سیستم
ماژول سیستم همانطور که در مستندات بیان شده است "شامل توابع برای ارسال پیام های سیستم استفاده شده توسط برنامه ها و پیام های مورد استفاده برای اهداف اشکال زدایی است."از بسیاری از توابع فراهم شده توسط ماژول, ما با سه نگران هستید.
: سیستم.گرفتن ایالت و: سیستم.جایگزین_حالت
هر دو: سیستم.گرفتن ایالت و: سیستم.جایگزین_استیت فقط با فرایندهای ژنراتور مفید است. اولی مقدار فعلی "حالت" را همانطور که در داخل سرور منتقل می شود برمی گرداند در حالی که دومی شما را قادر می سازد جایگزین کنید.
در مورد هر دو از این توابع, توجه داشته باشید از احتیاط مندرج در مستندات ارلانگ مجموعه, به خصوص برای :سیستم.جایگزین_حالت :
این توابع فقط برای کمک به اشکال زدایی در نظر گرفته شده اند و نباید از کد عادی فراخوانی شوند. این موارد برای راحتی در نظر گرفته شده اند و به توسعه دهندگان این امکان را می دهند که از ایجاد عملکردهای جایگزینی حالت سفارشی خود اجتناب کنند.
بیایید نحوه استفاده از هر دوی این توابع را با یک سرور ساده بررسی کنیم:
چیزی که در جلسه فوق مشاهده می کنید ساده است. در خطوط 1 و 2 ما ژنراتور بی فایده را اعلام و شروع می کنیم. در صرافی های باقیمانده یا حالت ژنراتور را بازیابی یا جایگزین می کنیم. : سیستم.درک ایالت / 1 به اندازه کافی ساده است: نام پید یا ثبت شده را می پذیرد و وضعیت فعلی سرور را برمی گرداند. : سیستم.جایگزین_دولت/2, اما, انتظار هر دو پد و یک تابع واحد, خروجی که به روز رسانی دولت سرور.
: سیستم.اطلاعیه ها
ابزار مشاهده گذشته ما در نگاه است: سیستم.ارقام/2,3 . مانند: سیستم.گرفتن ایالت/1 و: سیستم.2-فقط برای نمایندگی ها مفید است. عملکرد ارقام استفاده محدودی دارد اما با این کار می توانیم پیام ها را هنگام ورود و خروج از سرور نظارت کنیم و همچنین افزایش کاهش ها را ردیابی کنیم.
استفاده :سیستم.ارقام اول باید شروع کنید. سپس می توانید: اندازه گیری های فعلی را دریافت کنید. در اینجا یک مثال از چگونگی استفاده از فرایند چوب است:
در این مبادله ابتدا نیاز به ورود به سیستم داریم و سپس شروع به گرفتن ارقام با :سیستم ها می کنیم.ارقام چوب, درست . در خط 3, ما خروجی ارقام که نشان می دهد چوب است در 30 کاهش و تا به حال هیچ پیام در داخل یا خارج. سپس, در خط 4 ما خروجی یک پیام به Logger. info که منجر به افزایش کاهش و افزایش :پیام ها در 2 می شود. سرانجام, ما را خاموش تجمع ارقام در خط 6, که ما نشان می دهد اثبات در خط 7.
ایکس تولینگ
اگر شما به دنبال همراه با نمونه در ایکس, شما متوجه شده اند که خروجی است که اغلب گنده. لازم نیست اینطور باشد. در زیر شروع یک ماژول مشاهده شما می توانید در جلسه خود را شامل است. با این کار می توانید برخی از اطلاعاتی را که در این مقاله مورد بحث قرار داده ایم ساده کنید.
ماژول بیننده شما اجازه می دهد زیرچشمی نگاه کردن سریع در یک فرایند با نگاه / 1, لیست این فرایندها با نام با نام_پردازشها/0, و لیست فرایندهای همراه با مصرف حافظه خود را با استفاده از فرایند_ب_خاطره/0`. اگر چه مفید, ایده های هنوز هم بیشتر شما می تواند شامل به گسترش مشاهده روند خود را وجود دارد. در اینجا چند ایده وجود دارد:
- جستجو برای فرایندهای با نام مانند یک رشته داده شده (به عنوان مثال عبارت منظم)
- لیست فرایندهایی با حافظه یا کاهش بالاتر از حد معینی
- یافتن فرایندهایی که کاهش در حال رشد هستند سریع تر از یک نرخ داده شده
- مقادیر حافظه کد رنگ از فرایندها _ب_ حافظه/0 عملکرد
- لیست فرایندهایی که صندوق پستی هرگز کوچک نمی شود
- خروجی یک نمودار فرایند محدود مانند چیزی است که شما ممکن است در دیدن: ناظر
اگر دوست دارید این ماژول, شما هم می توانید کپی به طور مستقیم به یک .درشت.فایل قبلی را بخوانید یا از مکان دیگری بخوانید. من می خواهم به نگه داشتن معدن در HOME خانه/.ایکس و استفاده از خط زیر در من .درشت.سابق فایل.
نتیجه گیری
برای اکثر زبانها مشاهده اشیا و فرایندها مانند بازی کردن جعبه سیاه است. اگر شما شلیک به اندازه کافی "اشعه" را در جعبه, امید است شما یک ایده از چه خبر است در داخل. از طرف دیگر اکسیر مانند بازی جعبه سیاه با کدهای تقلب است. شما می توانید ببینید که دقیقا چه خبر است: چه مقدار حافظه مصرف هر فرایند, چگونه بسیاری از پیام های منتقل می شود, وقتی مجموعه زباله برگزار خواهد شد, و حتی که فرایندهای مربوط به که.
سازندگان ارلانگ هنگام نوشتن زبان قابل مشاهده بودند و اکسیر نیز همین توانایی ها را به ارث می برد. به خاطر همین, تمام ابزار ما نیاز به رعایت سیستم های ما همیشه در دسترس, موجود در درجه اول در فرایند و :ماژول های سیستم. نه تنها ابزارها همیشه در دسترس هستند بلکه ما می توانیم از این ابزارها در سیستم های زنده به سادگی با اتصال به سیستم های دارای کنسول استفاده کنیم. این قابل مشاهده واقعی است.