شما می توانید با ارسال ایمیل خود ، بصورت رایگان مشترک شده و از بروزسانی مطلع شوید.

ایمیل خود را وارد کنید:

اوراکل (ADF(Application Development Framework یک چارچوب(Framework)  کلی می باشد که برروی استانداردهای Java EE و تکنولوژی های Open Source جهت سادگی و پیاده سازی سریع تر برنامه های Java EE ایجاد شده است که کاملا توسعه پذیر و قابل تنظیم بوسیله افزودن یا اصلاح کتابخانه ها می باشد. ADF وظایف را از طریق ایجاد سرویس […]

CardLayout پنجره ای را در نظر بگیرید که شامل چندین پنل می باشد که در یک زمان فقط یکی از این پنل ها قابل مشاهده می باشد،با استفاده از کلاس java.awt.CardLayout شما می توانید کامپوننتی را ایجاد کنید که فقط یکی از این پنل ها را در یک زمان نمایش دهد، مانند شکل زیر: زمانی […]

اطلاعات سخت افزاری CPU اطلاعات CPU شامل جزئیاتی  مثل معماری ، نام سازنده ، مدل ، تعداد هسته ها ، سرعت هرکدام از هسته ها و غیره است. برای دسترسی به چنین جزئیاتی درباره سخت افزار CPU در لینوکس، تعداد بسیار اندکی کامند برای این منظور وجود دارد که ما در اینجا بطور مختصر تعدادی […]

خطایابی یا debugging برنامه های جاوا

در فرهنگ دنیای برنامه نویسی، خطا یا همان bug ایرادی در یک برنامه است که باعث می شود که برنامه بطور ناخواسته کار کند. لطفا bug را به خطاهای نحوی که دلیل استفاده نادرست از دستورات و با نحوه استفاده از دستورات رخ می دهد اشتباه نگیرید، چون اینگونه خطاها نهایتا جلوی آن توسط کامپایلر گرفته خواهد شد و تا زمانی که آنها را رفع نکنید برنامه شما رفع نخواهد شد.

Bugها دشمن برنامه شما در زمان اجرا هستند، برای اینکه bug برنامه ای را رفع کنید و یا اصطلاحا برنامه خود را debug کنید باید خطاهای برنامه خود را در زمان اجرای برنامه شناسایی کنید و آنها را تصییح کنید.

ساده ترین راه برای رفع خطای برنامه این است که برای اینکه از مقدار متغییری که فکر می کنید باعث ایجاد خطا شده است اطمینان حاصل کنید این است که با دستور ()System.out.println یا دستور مشابه مقدار متغییر را در خروجی چاپ کنید تا بتوانید آنرا بررسی کنید. شاید فکر کنید که یک متغییر خاصی، در طول اجرای برنامه مقدار مشخص را می گیرد اما ممکن است اشتباه کنید ولی اجرای برنامه به همراه چاپ مقدار متغییر در طول اجرای برنامه شما را در پیدا کردن دلیل اینکه چرا اجرای برنامه بطوری که دلخواه شما نیست و خروجی مورد نظر را چاپ نمی کند نجات دهد.

جاوا در درون خود دارای( API (Application Program Interfaceهایی است که بشما امکان log کردن هنگام اجرای برنامه را می دهد که می توانید logهای خود را مثلا درون یک فایل یا مقصد خاص مورد نظر دیگری نگهداری کنید.log کردن بدلیل اینکه از این حوزه خارج است فعلا وارد مباحث logging نمی شویم، اما صرفا جهت اطلاع علاقه مندان کلاس های جاوا مربوط به logging در پکیج java.util.logging قرار دارند.

بسیار پیش خواهد آمد که در هنگام برنامه نویسی با IDE که با آن کار می کنید از ابزار درون IDE خود دارید استفاده می کنید، با اینکه کلا در یکی از مطالب گذشته به برنامه Eclipse اختصاص داده شده بود توضیحح debugging در محیط Eclipse می تواند تا حدودی زودهنگام باشد، چون شما محیط Eclipse زیاد استفاده نکرده و کدنویسی و زیادی را در آن ندارید با این همه در ادامه بشما نحوه استفاده از محیط Eclipse را برای debugging بشما نشان خواهیم داد.

بیایید مثال مربوط به حلقه while مربوط به بخش های قبلی را با اجرای برنامه با debugger درون محیط Eclipse بررسی کنیم و ببینیم حلقه while چگونه کار می کند. برای اینکار می توان روی کلاس  WhileLoopDemo مربوطه راست کلیک کرده و گزینه Debug As Java Application را انتخاب کنید یا اینکه با کلیک روی آیکن کوچکی که در نوار ابزاز وجود دارد می توان این کار را انجام داد. اما قبل از اینکه این کار را انجام دهید با یک breakpoint به خطی از برنامه که می خواهید در زمان اجرای برنامه مکث شود اضافه کنید، با این کار Eclipse این امکان را به شما می دهد تا در نمای debugger همزمان با اجرای برنامه به اینکه در برنامه چه اتفاقی می افتد هم نگاهی بیندازید. ما قصرد داریم قبل از این که برنامه وارد بدنه while شود مکث داشته باشیم، برای اینکه به خطی از برنامه خود breakpoint اضافه کنید باید روی نوار عمودی خاکستری پنل Editor در مقابل خط دلخواه خود دابل کلیک کنید، بعد بولت کوچکی را مشاهده خواهید کرد که breakpoint است و اگر کدتان که دارای breakpoint است را اجرا کنید Eclipse به نمای  Debugger تغییر پیدا خواهد کرد و اجرای برنامه بصورت موقت متوقف می شود و خطی که قرار است اجرا شود بصورت متمایز نشان داده خواهد شد. شکل زیر نمایی از محیط Eclipse در این مرحله است:

دقت کنید فلش کوچکی که کنار بولت breakpoint قرار دارد خط بعدی که قرار است اجرا شود را مشخص می کند. پنل Variables مقدار متغییرهای برنامه را در هر لحظه نشان می دهد که متغییر i برابر صفر و متغییر totalElements برابر ۱۰ می باشد، اگر کنار علامت + کنار friends قرار دارد کلیک کنید می توانید محتوای آرایه را ببینید.

حالا باید برنامه را قدم به قدم اجرا کنیم تا ببینیم مقدار متغییر i چگونه تغییر می کند، شما می توانید روند اجرای برنامه را با استفاده از کلیک بر روی دکمه هایی که روی نوار ابزار debug قرار دارد کنترل کنید.

دکمه ی play سبز به معنی این است که اجرای برنامه را ادامه بده تا جایی که کل اجرای برنامه به اتمام برسد یا این که با breakpoint برخورد دیگری کنیم. مربع قرمز یعنی فرایند debugging و خاتمه بده. فلش خمیده(step into) به این معناست که اگر در خطی که برنامه بطور موقت در آنجا متوقف شده متدی فراخوانی شده است وارد آن متد هم می شویم و خطوط کدی که درون آن متد نیز قرار دارد را بررسی می کنیم. فلش خمیده دوم(step over) بشما این امکان را می دهد که خط جاری را در صورتی که دارای هر متدی باشد بدون وارد شدن به جزئیات و کدهای درون آن متد برنامه را اجرا کنیم. باکلیک بروی دکمه step over وارد حلقه شوید و به کلیک روی همین دکمه ادامه دهید خواهید دید که برنامه وارد بلوک if نمی شود که درست هم است، زیرا اولین عنصر از آرایه friends دارای مقدار بود و null نبود و بعداز if کد System.out.println  مربوط به جمله  my friend’s name is را اجرا می گردد و بعداز اینکه با اجرای دستور i++ مقدار متغییر i یک واحد افزایش پیدا کرد، اجرای برنامه به قسمت بررسی شرط حلقه بر می گردد که آیا هنوز مقدار متغییر i کوچکتر از مقدار متغییر totalElement است یا خیر. روی علامت+ کنار آرایه friends کلیک کنید تا محتویات تمام خانه های آن برای شما به نمایش دربیایید، بعد روند اجرای برنامه را با کلیک مداوم بر روی کلیک روی دکمه stepover دنبال کنید. بااین خواهید ففهمید که چرا با توجه به محتویات خانه های آرایه روال اجرای برنامه گاهی وارد بلوک if می شود و گاهی نه. می شود گفت که ابزار debugger در محیط Eclipse کمک کننده ترین ابزار برای یادگیری یک زبان برنامه نویسی است. برای مثال اگر کدی که خودتان ننوشته باشید و حتی اگر ان کد بدون هیچ مشکلی باشد زیر نظر گرفتن مرحله به مرحله اجرای روال برنامه در debugger در فرایند یادگیری شما بسیلر کمک کننده خواهد بود.

دیدگاه خود را به ما بگویید.