رفتن به نوشته‌ها

لذت واقعی کد زدن با JetBrain

یکی از بهترین چیزهایی که در محیط کار یاد گرفتم و اگر اشتباه نکنم از شایان هم یاد گرفتم بحث دیباگ بود. موقعی که داشتم اندروید میزدم ازش کمک خواستم و آمد بالای سرم و یه کدی رو برام دیباگ کرد و اولین باری بود که قابلیت Evaluate Expression اندروید استودیو رو میدیدم و واقعا به وجد آمدم که محیط توسعه چقدر میتونه برنامه‌نویسی رو راحت کنه. از اون زمان تا الان افراد کمی رو دیدم که با این قابلیت آشنا باشن و بنظرم خیلی خوب است که دیباگ کردن رو در این محیط توسعه یاد بگیرند. و بخاطر همین شروع کردم به نوشتن این پست و گفتم شاید خوب باشه که تجربیاتم رو با شما اشتراک بگذارم و خوشحال میشم اگر شما هم چیزی از این محیط توسعه میدونید و بهم منتقل کنید.

در وصف محصولات جت‌برین فکر کنم هرچی بگم کمه و به قول یک بزرگواری میگفت:

اینتلیجی ۲ گیگ رم مصرف میکنه ولی تا عصر اندازه ۸ گیگ برات کار میکنه…

به همین خاطر در ادامه نحوه دیباگ و چیزهایی که دوست داشتم خیلی زودتر درباره جت‌برین یاد بگیرم رو اینجا مینویسم. موارد زیر در همه محصولات جت‌برین (اینتلیجی، پای‌چارم، پی‌اچ‌پی استورم و…) قابل استفاده و استفاده از آنها حلال بی‌شبهت است. 😀

JetBrain product

خب اول از همه با یک مثال ساده شروع میکنم و نحوه دیباگ در این محیط توسعه رو بررسی میکنیم و این هم بگم که مثال‌هایی که در پایین آورده میشه در IntelliJ زده شده است.

فرض کنید یک حلقه داریم و داخلش چندتا عبارت داریم (کد فیبوناچی با حلقه). همانطور که مشاهده میکنید دو Break point (نقاط قرمز کنار کد) گذاشتم و وقتی IDE در حالت دیباگ به آنها میرسد توقف میکند.

debug in jetbrain

وقتی که در نقطه مورد نظر توقف میکند، شما میتونید مقدار متغییر‌ها رو مشاهده کنید و حتی اگر لیست یا دیکشنری یا هر ساختار داده‌ی دیگری بودند میتونید در قسمت پایین روشون کلیک کنید و محتوای اون رو ببینید (قسمت Variables).

حالا فرض کنید میخواهید برید خط بعد و نتیجه f3 رو ببینید چی میشه در این صورت فقط کافیه روی Step over کلیک کنید. در واقع این دکمه به این معناست که برو خط بعد. یا فرض کنید میخواهید برید به Break point بعدی در این صورت کافیه روی Resume program کلیک کنید.

خب فرض کنید در خط ۳۱ام و روی تابع say_hello هستیم در صورتی که Step over رو بزنید به ابتدای کد برمیگردید یعنی به خط ۲۷ام. ولی فرض کنید میخواهید برید داخل تابع و ببینید در درون تابع چه اتفاقی میافته در این صورت کافیه روی Step Into کلیک کنید و به داخل تابع میرید.

خب در مثالی که من زدم تابع say_hello خیلی کوچیکه و از یک خط تشکیل شده است و اگر داخل تابع یک‌بار Step over بزنید تموم میشه و به جایی که بودید (خط ۳۱) برمیگرده فرض کنید این تابع خیلی بزرگ بود (مثلا ۱۰۰ خط بود) و شما میخواستید ببینید، خط دومش چه اتفاقی میافته و بعدش از تابع بیایید بیرون. خب یه راه حل خیلی ساده این هست که یک Break point بیرون تابع بزارید و دوباره Resume program رو بزنید ولی یک روش بهتر این است که روی Step out کلیک کنید. در واقع این دکمه (Step out) به این معناست که تابعی که توش هستیم اجرا کن و بیا بیرون.

خب به یکی قسمت مورد علاقه من یعنی Evaluate Expression رسیدیم به نظرم این یکی از جذاب‌ترین فیچرهای Jetbrain است. با استفاده از این قابلیت دیباگر این امکان رو به شما میدهد که در زمان اجرا مقدار متغییرهاتون رو عوض یا روشون تغییراتی اعمال کنید. مثلا فرض کنید من خط ۲۸ ام توقف کردم و میخوام ببینم توان ۲ متغییر f3 چی میشه. در این حالت کافیه روی خط ۲۸ام یه Break point بزارم و هنگامی که بهش رسیدم روی Evaluate Expression کلیک کنید. خب حالا براتون یک باکس مثل شکل زیر میاره که میتونید توش هرچی که دوس دارید بنویسید (و در واقع شما دارید در زمان اجرا کد میزنید و همزمان مقدارشو براتون محاسبه میکنه).

evaluate expression in Jetbrain

همینطور که در عکس میبینید زمانی که i برابر ۸ است میخواستم مقدار f3 به توان دو رو ببینم که با استفاده از Evaluate expression این کار به راحتی قابل انجام است.

خب حالا فرض کنید شما میخواهید مقدار ۲۰ام عدد فیبوناچی رو ببینید چی میشه و حلقه شما ۵۰ بار تکرار میشه در این صورت میتونید روی Break point خودتون شرط بزارید و بگید موقعی که ۲۰ بار در حلقه چرخید توقف کنه نه همون دفعه اول. در این صورت کافیه روی Break point کلیک راست کنید و قسمت Condition شرط مورد نظر رو بنویسید که در اینجا شرط ما میشه موقعی که حلقه ۲۰ بار تکرار شده بود.

condition in debug with pycharm

 

خب با شرط بالا وقتی دیباگ کنید به صورت متوالی در Break point توقف نمیکند بلکه تنها موقعی توقف میکند که i برابر ۲۰ باشد (پیشنهاد میکنم به قسمت More برید و چیزهای جذاب دیگه رو هم خودتون امتحان کنید).

خیلی موارد جذاب دیگه که در این پست گفته نشده رو میتونید از اینجا بخونید. چیزهایی مثل اینکه چطوری Threadهارو دیباگ کنیم یا اینکه چطور Break point یکبار اجرا بشه و Step into my code چیه و فرقش با Step into که در بالا گفتم و خیلی چیزهای دیگه که اگر بخواه همشون رو بگم احتمالا حوصله‌اتون سر میره و بخاطر همین سعی میکنم در یک پست دیگه راجع Watcher و Attaching و … صحبت کنم.

یک ویدئو بسیار زیبا هم از هادی حریری در سایت JetBrain وجود دارد که در زیر میتونید ملاحظه کنید و در این ویدئو مواردی رو میگه که مطمئنم از دیدنش به وجد خواهید آمد. 🙂

منتشر شده در متفرقه

اولین باشید که نظر می دهید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *