اشکال زدایی (Debugging)
اشکال زدایی (Debugging) یعنی پیدا کردن و درست کردن «باگ (Bug)». باگ همان اشتباه برنامه است. گاهی برنامه کرش می کند، یا خروجی اشتباه می دهد. پس کد را تمیز نگه داریم تا راحت تر عیبش را ببینیم.
قبل از شروع اشکال زدایی
کد تمیز ساده تر دیباگ می شود. یعنی تورفتگی مرتب باشد و نام متغیرها واضح باشد. مثل دفترِ منظم که خطاها سریع دیده می شوند.
1) اشکال زدایی با چاپ (Print Debugging)
با cout مقدارها را در نقاط مختلف چاپ کن. اگر چاپ بعدی نیامد، مشکل همان جاست.
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = 0;
cout << "Before division\n";
int z = x / y;
cout << "After division\n";
return 0;
}
نکته: اگر «After division» چاپ نشد، برنامه هنگام x / y متوقف شده است.
2) بررسی مقدار متغیرها
گاهی منطق اشتباه است. مقدارها را چاپ کن و انتظار را مقایسه کن.
#include <iostream>
using namespace std;
int main() {
int x = 10;
int y = 5;
int result = x - y;
cout << "Result: " << result << "\n";
return 0;
}
نکته: انتظار 15 داشتی؟ پس باید x + y باشد، نه x - y.
3) استفاده از دیباگرِ IDE
در IDE ها می توانی توقف گاه بگذاری، خط به خط اجرا کنی، و مقدارها را تماشا کنی. این کمک می کند مسیر خطا را دقیق ببینی.
4) از پیام خطا یاد بگیر
پیام های کامپایلر معمولاً می گویند «چه شده» و «کجا». مثل: error: expected ';' before 'return'. پس یک سمی کالن جا افتاده است.
گام های عملی اشکال زدایی
- کد را مرتب و قابل خواندن کن.
- چند چاپِ راهنما اضافه کن.
- محل توقف را پیدا کن.
- با دیباگر خط به خط جلو برو.
- پیام خطا را دقیق بخوان و اصلاح کن.
عادت های خوب
- نام های واضح برای متغیرها بگذار.
- توابع را کوتاه و متمرکز نگه دار.
- بعد از هر تغییر، دوباره تست کن.
نکته: برای خطاهای زمان اجرا، «مدیریت استثنا (Exception Handling)» هم مهم است. لینکِ بعدی را ببین.
مطالعه مرتبط
ابتدا صفحه خطاها را ببین تا انواع خطا را بشناسی. سپس به اشکال زدایی برگرد و با این گام ها تمرین کن. برای ادامه مسیر، بخش تاریخ هم برای زمان بندی لاگ ها کمک می کند.
جمع بندی سریع
- کد تمیز، دیباگ آسان تر.
- چاپ ها محل خطا را نشان می دهند.
- دیباگر، اجرای خط به خط می دهد.
- پیام خطا را دقیق بخوان.
- به وقت نیاز، از استثناها کمک بگیر.