debugging

اشکال زدایی با تابع ()assert

debugging

سلام دوستان

اشکال زدایی برنامه، برای داشتن یک برنامه کامپیوتری کارا و بدون نقص لازم است. در زمان کامپایل/اجرا، اشکالات مختلفی می تواند در حین نوشتن برنامه به وجود بیاید؛ که یکی از دسته های این اشکلات، اشکالات منطقی است. برطرف کردن این نوع اشکالات گاهی می تواند بسیار اعصاب خوردکن و زمان بر باشد! در این پست، می خواهیم نکاتی درباره تابعی از قبل آماده شده در زبان C و ++C بیان کنیم که با استفاده از آن می توانید در صورتی که قسمتی از برنامه، نتیجه ای برخلاف نتیجه مطلوب شما داشت متوجه آن بشوید.

فرم تعریف تابع:

اگر مقدار آرگومان (expression)، مقدار عددی ۰ و یا مقدار بولین false باشد، این تابع ابتدا متنی با شکل و محتوای زیر روی دستگاه خروجی خطای استاندارد، می نویسد و سپس به اجرای برنامه، به طور ناتمام  خاتمه می دهد.

Assertion failed: <expression>, file <filename>, line <line number>

 خب تا اینجا، شما به عنوان یک برنامه نویس، خط کد و عبارت آن را که نتیجه ای خلاف انتظار دارد و اشکال منطقی برنامه شما را به وجود می آورد، شناختید.

بعد از دیدن یک مثال بسیار ساده، با ذکر دو نکته معرفی تابع ()assert را به اتمام می رسانیم. البته یافتن دلیل اشکال منطقی برنامه مثالی را به عهده خواننده باهوش و کاردان می گذاریم!

و اما نتیجه :

Result

نکته اول:
هنگامی که برنامه شما از این دست مشکلات خالی شد و یا آماده بودید که برنامه را به سفارش دهنده تحویل بدهید، استفاده از ماکروی زیر می تواند موجب شود کامپایلر در کامپایل بعدی تمام دستورات assert را نادیده بگیرد. اما توجه داشته باشید که حتماً این ماکرو باید قبل از هدر فایلِ assert.h یا cassert تعریف شده باشد، در غیر این صورت بی استفاده خواهد بود.

نکته دوم:
نکته دوم ربط محسوسی به نکته اول دارد. در نکته اول گفتیم تمام دستورات assert می تواند با تعریف ماکروی مذکور نادیده گرفته بشوند؛ پس وابسته کردن برنامه به اجرای حتمی دستور assert اشتباهی بزرگ است. مثال های زیر منظور را واضح تر ارائه خواهد داد.

 

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

نظر خود را بنویسید.

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