تکنیک های اشکال زدایی: پایتون و لینوکس با استفاده از خطایابی

پایتون و لینوکس به دلیل انعطاف پذیری پایتون و اسکریپت نویسی قدرتمند لینوکس که برای اتوماسیون و توسعه ایده آل است، یکدیگر را برای پروژه ها تکمیل می کنند.
اشکال زدایی یک مهارت ضروری برای توسعه دهندگان است. چه در پایتون یا لینوکس کار میکنید، تکنیکهای اشکالزدایی مؤثر میتواند ساعتها ناامیدی را نجات دهد. این مقاله تکنیکهای متعددی را برای اشکالزدایی در پایتون و لینوکس، با تمرکز بر رویکردهای کشف خطا، بررسی میکند.
تکنیک های اشکال زدایی در پایتون و لینوکس با استفاده از Error Catching
اشکال زدایی یک مهارت ضروری برای توسعه دهندگان است. چه در پایتون یا لینوکس کار میکنید، تکنیکهای اشکالزدایی مؤثر میتواند ساعتها ناامیدی را نجات دهد. این مقاله تکنیکهای متعددی را برای اشکالزدایی در پایتون و لینوکس، با تمرکز بر رویکردهای کشف خطا، بررسی میکند.
اشکال زدایی در پایتون
- با استفاده از try و به جز Blocks
بلوکهای try و غیر از پایتون به شما امکان میدهد استثناها را بهخوبی دریافت و مدیریت کنید.
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")
بهترین روش: به جای استفاده از یک بلوک به جز عمومی، استثناهای خاص را بگیرید.
- خطاهای ثبت نام
استفاده از ماژول ورود به سیستم انعطاف پذیری بیشتری نسبت به بیانیه های چاپی برای ردیابی خطا فراهم می کند.
import logging
logging.basicConfig(level=logging.ERROR, format="%(asctime)s - %(levelname)s - %(message)s")
try:
result = 10 / 0
except ZeroDivisionError as e:
logging.error("Exception occurred", exc_info=True)
نکته: گزارشها را برای ردیابی خطاهای مداوم در یک فایل ذخیره کنید.
- اشکال زدایی با pdb (باگر پایتون)
ماژول pdb یک محیط اشکال زدایی تعاملی را ارائه می دهد.
import pdb
def buggy_function(x, y):
pdb.set_trace()
return x / y
buggy_function(10, 0)
برای پیمایش در کد، از دستوراتی مانند n (بعدی)، c (ادامه) و q (خروج) استفاده کنید.
- استفاده از اظهارات
ادعاها با آزمایش شرایطی که باید درست باشند، به تشخیص زودهنگام خطاها کمک می کنند.
x = -1
assert x > 0, "x must be positive"
هشدار: اظهارات نباید برای اعتبار سنجی ورودی در کد تولید استفاده شوند.
- ابزارهای اشکال زدایی شخص ثالث
ipdb: نسخه بهبودیافته pdb با تکمیل برگه و برجسته سازی نحو.
pyringe: یک ابزار اشکال زدایی قدرتمند برای بازرسی فرآیندهای پایتون زنده.
اشکال زدایی در لینوکس
- چک کردن گزارش ها
لاگ ها برای تشخیص مشکلات در لینوکس بسیار ارزشمند هستند. مکان های رایج عبارتند از:
گزارش های سیستم: /var/log/syslog
یا /var/log/messages
سیاهههای مربوط به برنامه
sudo tail -f /var/log/syslog
- استفاده از strace
strace به شما کمک میکند تا تماسهای سیستمی که توسط یک فرآیند ایجاد میشود را ردیابی کنید.
strace -o trace.log python3 script.py
فایل trace.log را برای شناسایی تماس های مشکل دار سیستم تجزیه و تحلیل کنید.
- استفاده از gdb (Debugger GNU)
gdb برای اشکال زدایی برنامه های کامپایل شده ضروری است، اما برای Python با پسوند python-gdb نیز کار می کند.
gdb python3
(gdb) run script.py
از bt (backtrace) برای بررسی خرابی ها استفاده کنید.
- نظارت بر استفاده از منابع
استفاده زیاد از منابع می تواند باعث ایجاد خطا شود. ابزارهایی مانند top، htop و iotop برای نظارت بر عملکرد سیستم عالی هستند.
بالا
- استفاده از dmesg برای پیام های هسته
تعریف: هسته
جزء اصلی یک سیستم عامل که منابع سخت افزاری را مدیریت می کند و ارتباط بین سخت افزار و نرم افزار را تسهیل می کند. این به عنوان یک پل عمل می کند و وظایفی مانند مدیریت فرآیند، تخصیص حافظه و عملیات ورودی/خروجی را انجام می دهد.
dmesg پیام های مرتبط با هسته را نمایش می دهد که برای تشخیص مشکلات سخت افزاری یا درایور مفید است.
dmesg | tail -20
ترکیب اشکال زدایی پایتون و لینوکس
هنگام اشکال زدایی برنامه های پایتون در لینوکس، اغلب نیاز به ترکیب تکنیک های هر دو دامنه دارید.
مثال: اشکال زدایی یک اسکریپت پایتون با مشکل مجوزهای فایل
Python Side: مدیریت استثنا را برای عملیات فایل اضافه کنید.
try:
with open("/root/secret.txt", "r") as file:
data = file.read()
except PermissionError as e:
print(f"Permission error: {e}")
سمت لینوکس: مجوزهای فایل را بررسی کنید.
ls -l /root/secret.txt
ردیابی تماس های سیستم: از strace برای ردیابی مشکل استفاده کنید.
strace -e open python3 script.py
نکات عمومی رفع اشکال
بازتولید مشکل: بازتولید مداوم اشکال به کاهش مشکل کمک می کند.
از کنترل نسخه استفاده کنید: ابزارهایی مانند Git به شما امکان می دهد تغییرات را ردیابی کنید و تعهدات مشکل ساز را جدا کنید.
رفع سند: سابقه ای از مسائل و راهکارها را برای مراجعات بعدی حفظ کنید.
تست های خودکار: از چارچوب هایی مانند unittest یا pytest برای جلوگیری از رگرسیون استفاده کنید.
نتیجه گیری
با تسلط بر این تکنیک های اشکال زدایی در پایتون و لینوکس، می توانید کارایی و مهارت های حل مسئله خود را به میزان قابل توجهی بهبود بخشید. به یاد داشته باشید، اشکال زدایی فقط برای رفع خطاها نیست، بلکه در مورد درک عمیق تر کد و رفتار سیستم شما است.
اعتبار تصویر