اشکال زدایی از برنامه های رشته در همزمانی پایتون

3 سال پیش
اشکال زدایی از برنامه های رشته در همزمانی پایتون

اشکال زدایی از برنامه های رشته در همزمانی پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به اشکال زدایی از برنامه های رشته در همزمانی پایتون خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پایتون

در این درس، نحوه اشکال زدایی از برنامه های رشته در همزمانی پایتون را یاد خواهیم گرفت. ما همچنین اهمیت اشکال زدایی را یاد خواهیم گرفت.

اشکال زدایی چیست؟

در برنامه نویسی رایانه ای، اشکال زدایی فرآیند یافتن و از بین بردن اشکالات ، خطاها و ناهنجاری ها از برنامه های رایانه ای است. این فرآیند به محض نوشتن کد آغاز می شود و در مراحل پی در پی ادامه می یابد زیرا کد با سایر واحدهای برنامه نویسی ترکیب می شود و یک محصول نرم افزاری را تشکیل می دهد. اشکال زدایی بخشی از فرایند آزمایش نرم افزار است و بخشی جدایی ناپذیر از کل چرخه عمر توسعه نرم افزار است.

خطایاب پایتون

خطایاب پایتون یا pdb بخشی از کتابخانه استاندارد پایتون است. این یک ابزار مناسب برای ردیابی اشکالات سخت قابل کشف است و به ما امکان می دهد کد معیوب را به سرعت و با اطمینان برطرف کنیم. موارد زیر دو مهمترین وظیفه خطایاب pdp هستند –
  • به ما امکان می دهد مقادیر متغیرها را در زمان اجرا بررسی کنیم.
  • ما می توانیم از طریق کد گام برداریم و نقاط ضعف آن را برطرف کنیم.
ما می توانیم با pdb به دو روش زیر کار کنیم –
  • از طریق خط فرمان؛ به این روش رفع اشکال پس از مرگ نیز گفته می شود.
  • با اجرای تعاملی pdb.

کار با pdb

برای کار با خطایاب پایتون، ما باید از کد زیر در مکانی که می خواهیم به خطایاب وارد کنیم استفاده کنیم –
import pdb;
pdb.set_trace()

 

برای کار با pdb از طریق خط فرمان، دستورات زیر را در نظر بگیرید.
  • H (کمک)
  • d (پایین)
  • U (بالا)
  • B (شکستن)
  • cl (روشن)
  • l (لیست))
  • n (بعدی))
  • C (ادامه)
  • s (مرحله)
  • r (بازگشت))
  • B (شکستن)
در زیر نسخه آزمایشی دستور h (راهنما) از خطایاب پایتون وجود دارد –
import pdb

pdb.set_trace()
--Call--
>d:\programdata\lib\site-packages\ipython\core\displayhook.py(247)__call__()
-> def __call__(self, result = None):
(Pdb) h

Documented commands (type help <topic>):
========================================
EOF   c         d       h        list     q       rv      undisplay
a     cl        debug   help     ll       quit    s       unt
alias clear     disable ignore   longlist r       source  until
args  commands  display interact n        restart step    up
b     condition down    j        next     return  tbreak  w
break cont      enable  jump     p        retval  u       whatis
bt    continue  exit    l        pp       run     unalias where

Miscellaneous help topics:
==========================
exec pdb

مثال

هنگام کار با خطایاب پایتون، با استفاده از خطوط زیر می توان نقطه شکست را در هر نقطه از اسکریپت تنظیم کنید –
import pdb;
pdb.set_trace()

 

پس از تعیین نقطه شکست، می توانیم اسکریپت را به طور معمول اجرا کنیم. اسکریپت تا یک زمان خاص اجرا می شود. تا جایی که یک خط تعیین شده است. مثال زیر را در نظر بگیرید که ما اسکریپت را با استفاده از خطوط فوق در مکانهای مختلف اسکریپت اجرا خواهیم کرد –
import pdb;
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print (final)
وقتی اسکریپت فوق اجرا شد، برنامه را تا a = “aaa” اجرا می کند، می توانیم این را در خروجی زیر بررسی کنیم.

خروجی

--Return--
> <ipython-input-7-8a7d1b5cc854>(3)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
*** NameError: name 'b' is not defined
(Pdb) p c
*** NameError: name 'c' is not defined

 

پس از استفاده از دستور “(p (print” در pdb، این اسکریپت فقط در حال چاپ “aaa” است. این یک خطا به دنبال دارد زیرا ما نقطه شکست را روی a = “aaa” تنظیم کرده ایم.
به طور مشابه، ما می توانیم اسکریپت را با تغییر نقاط شکست اجرا کنیم و تفاوت در خروجی را ببینیم –
import pdb
a = "aaa"
b = "bbb"
c = "ccc"
pdb.set_trace()
final = a + b + c
print (final)

 

خروجی

--Return--
> <ipython-input-9-a59ef5caf723>(5)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
'bbb'
(Pdb) p c
'ccc'
(Pdb) p final
*** NameError: name 'final' is not defined
(Pdb) exit

 

در اسکریپت زیر، ما نقطه شکست را در خط آخر برنامه تنظیم می کنیم –
import pdb
a = "aaa"
b = "bbb"
c = "ccc"
final = a + b + c
pdb.set_trace()
print (final)

 

خروجی به شرح زیر است –
--Return--
> <ipython-input-11-8019b029997d>(6)<module>()->None
-> pdb.set_trace()
(Pdb) p a
'aaa'
(Pdb) p b
'bbb'
(Pdb) p c
'ccc'
(Pdb) p final
'aaabbbccc'
(Pdb)

 

منبع.

 

لیست جلسات قبل آموزش همزبانی در پایتون

  1. آموزش همزمانی در برنامه نویسی پایتون
  2. آموزش همزمانی در برنامه نویسی پایتون _ مقدمه
  3. آموزش معماری سیستم و حافظه در برنامه نویسی پایتون
  4.  آموزش رشته ها در همزمانی پایتون 
  5. آموزش پیاده سازی رشته در همزمانی پایتون
  6. آموزش همگام سازی رشته ها در همزمانی پایتون
  7. آموزش ارتباط رشته ها در همزمانی پایتون
  8. آموزش تست برنامه های رشته در همزمانی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه