دسته‌ها
فناوری

بررسی ابزار عیب یابی مایکروسافت WinDbg

WinDbg ابزاری قدرتمند برای اشکال زدایی (debugging) نرم افزارهای مختلف می باشد که توسط مایکروسافت توسعه یافته و به ویژه برای تعیین علل خرابی(crashes)، هنگ و سایر خطاهای رخ داده در سیستم عامل های ویندوز مورد استفاده قرار می گیرد.

WinDbg، با ارائه امکان تجزیه و تحلیل عمیق در راستای حل مشکلات پیچیده، ابزاری ضروری برای توسعه دهندگان نرم افزار به شمار می‌رود.

ویژگی های اساسی WinDbg.

  • اشکال زدایی کرنل و حالت کاربر:
    از توانایی عیب یابی در هر دو سطح هسته و سطح کاربر برخوردار می‌باشد.
  • پشتیبانی از نماد:
    با استفاده از نام های نمادین کد، موجب سهولت اشکال زدایی می‌گردد.
  • تجزیه و تحلیل حافظه:
    برای بازرسی محتوای سطح حافظه، تشخیص نشت و تحلیل خرابی های مختلف به کار می‌رود.
  • تحلیل نشانگر:
    برای بررسی قرارگیری نشانگرها در مکان صحیح و یافتن خطاهای دسترسی به حافظه استفاده می شود.
  • دستورات مختلف:
    علاوه بر این، WinDbg امکان پشتیبانی از سناریوهای اشکال زدایی پیچیده با تعداد زیادی دستورات قدرتمند را فراهم می‌سازد.
  • پشتیبانی از افزونه (Extension):
    برای گسترش قابلیت های WinDbg امکان بهره‌مندی از پلاگین های مختلف وجود دارد.
  • پشتیبانی از اسکریپت:
    برای اجرای دستورات به صورت اتوماسیون امکان طراحی اسکریپت ممکن می باشد.

کاربردهای مهم WinDbg

  • تجزیه و تحلیل خرابی تصادفی (Crash):
    متداول ترین روش برای تعیین علل خرابی برنامه ها در زمانی مشخص می باشد.
  • تجزیه و تحلیل انجماد (هنگ):
    امکان تعیین علت عدم پاسخگویی برنامه ها را فراهم می‌کند.
  • تجزیه و تحلیل نشت حافظه:
    با بهره‌مندی از این ویژگی، میتوان هنگام اجرای برنامه های مختلف احتمالات نشتی حافظه را به طور دقیق مشخص نمود.
  • عیب یابی درایور:
    برای رفع اشکال در درایورهای قطعات مختلف سیستم به کار می رود.
  • عیب یابی Kernel:
    عمل شناسایی مشکلات در سطح هسته سیستم عامل را مورد بررسی قرار می دهد.
  • تجزیه و تحلیل امنیتی:
    برای شناسایی و تحلیل آسیب پذیری های مختلف به کار می رود.

عملکردهای اصلی WinDbg.

  • ۱. انتخاب فرآیند یا هسته برای اشکال زدایی.
  • ۲. بارگذاری نمادهای مربوط به کدی که باید اشکال زدایی شود.
  • ۳. تعیین نقطه شکست (breakpoint) برای توقف کد در یک نقطه خاص.
  • ۴. بررسی وضعیت کد متوقف شده، بررسی مقادیر متغیرها و امکان پیشرفت به طور منظم و گام به گام.

دستورات مهم WinDbg.

WinDbg دارای دستورات قدرتمند زیادی می باشد که، در این بخش برخی از پرکاربردترین آنها را مورد بررسی قرار می دهیم:

  • “.break”:
    تعیین نقطه شکست.
  • “.goto”:
    مراجعه به یک آدرس یا عمل اجرایی خاص.
  • “.eval”:
    ارزیابی عبارت مورد نظر.
  • “.printf”:
    دستور نوشتن اطلاعات روی صفحه.
  • “!analyze”:
    آغاز تحلیل اشکال.
  • “!vm”:
    مشاهده اطلاعات حافظه مجازی.
  • “dt”:
    نمایش محتویات نوع داده ی خاص.

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

۱. ابتدا فایل dump ایجاد شده توسط سیستم را با WinDbg باز می کنیم.

۲. سپس نمادهای مرتبط با اپلیکیشن و سیستم عامل را بارگذاری می کنیم.

۳. در این مرحله با اجرای دستور “!analyze -v” علت وقوع مشکل را به تفصیل تحلیل می کنیم.

۴. با بررسی داده های call stack با دستور “kv”، توابعی که باعث ایجاد خرابی شده باشند را مشخص می کنیم.

۵. و در ادامه با اجرای دستور “dt” مقادیر متغیرهای مربوطه را بررسی می کنیم.

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

اگرچه WinDbg با هدف شناسایی مشکلات در سیستم عامل ویندوز طراحی شده، ابزارهای اشکال زدایی منظم و دقیق برای اهداف مشابه در سایر سیستم عامل ها نیز برنامه ریزی گردیده است.

با توجه به این که WinDbg معمولا از طریق خط فرمان قابل اجرا می باشد، همچنین می تواند از طریق افزونه های دارای رابط گرافیکی مانند WinDbgX نیز در دسترس قرار گیرد.

WinDbg ابزاری قدرتمند برای حل مشکلات نرم افزاری پیچیده به شمار می رود.

با این حال، برای استفاده کارآمد و مطلوب از ویژگی مذکور، به اندکی دانش توسعه نرم افزاری نیاز خواهید داشت.

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

برای آشنایی بیشتر با ابزار مذکور میتوانید به مستندات رسمی منتشر شده توسط مایکروسافت و یا متالب انجمنهای مختلف توسعه دهندگان نرم افزار مراجعه فرمایید.

نسخه ترکی