کنترل حافظه برنامه با Valgrind

خیلی پیش میاد برنامه‌هایی تو cpp بنویسیم که اشکال مدیریت حافظه داشته باشن. به خصوص وقتی کارای پیچیده با پویینترها می کنیم از این دست مشکلا زیاد پیش میاد. تو این شرایط نیاز به ابزاری داریم که برنامه ما رو به لحاظ مدیریت حافظه چک کنه. خوب Valgrind عزیز ما از این دست برنامه هاست.

Valgrind
برای استفاده از Valgrind کافیه که برنامه رو با سوییچ g و ترجیحا همراه با سوییچ O0 کامپایل کنید. اولی به برنامه اطلاعات دیباگ اضافه می کنه و سوییچ دوم جلوی اپتیمایز شدن برنامه رو می گیره تا شماره خطا موقع اشکال‌زدایی درست نمایش داده بشن. فرض کنید برنامه تون که به این روش کامپایل شده اسمش باشه prog. برای کنترل این برنامه کافیه اون رو با Valgrind فراخوانی کنید:
[bash]
valgrind prog
[/bash]
Valgrind خیلی شیک و مجلسی برنامه رو اجرا می کنه و هر جا ایراد حافظه بود بهمون اعلام می کنه. دو تا سوییچ خیلی کاربردیش یکی leak-check اه که خطاهای نشت حافظه رو کنترل می کنه و دیگه track-origins=yes که دقیق مشخص می کنه این خطا مال کجای برنامه اصلیه.

Valgrind ابزارای دیگه ای مثل profiling و پیدا کردن race condition ها برای برنامه سازی موازی هم داره که می شه از مستنداتش خوند.

نکته مهم: من تو این کار خاصی که رفتم سراغ Valgrind، اگر به همه warning های کامپایلر توجه کرده بودم، اساسا مشکلم به Valgrind نمی‌کشید. روشن نگه داشتن سوییچ Wall کامپایلر و توجه به پیغاماش همیشه ایده خوبیه.

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

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