آمنوتجیکارا
آمنوتجیکارا
خواندن ۲ دقیقه·۵ سال پیش

پیدا کردن منشا خطا در برنامه با آنالیز فایل Dump

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

ابزارهایی وجود دارند که حافظه را مورد کاوش قرار داده و فعالیت هایی که یک پروسس انجام می دهد را مانیتور می کنند. در حال حاضر ابزارهای مختلفی وجود دارند از جمله Visual Studio, ProcDump, DebugDiag و WinDbg که ما در این پست از ProcDump استفاده می کنیم.

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

برنامه را اجرا میکنیم، سپس به TaskManager رفته و آیدی پروسس برنامه را پیدا میکنیم.

آیدی پروسس ما 10896 می باشد.

ProcDump را دانلود کرده و توسط CMD به این صورت اجرا کرده تا تمامی فعالیت های پروسس موردنظر را زیرنظر بگیرد و فایل Dump را تولید کند.

procdump.exe -ma -e 10896

حالا نوبت به کلیک روی Button جهت ایجاد خطا می رسد. روی باتون کلیک کرده و منتظر می شویم تا Dump از حافظه جمع آوری و در سیستم تولید شود.

عملیات با موفقیت انجام شده و فایل Dump در ادرس مشخص ایجاد می شود.

پیدا کردن منشا خطا

بعد از ایجاد فایل Dump نوبت به پیدا کردن منشا خطا و رسیدن به کد موردنظر می رسد. ویژوال استودیو را باز کنید و فایل Dump را درون VS درگ/دراپ کنید.

در پنجره ای که باز میشود میتوانید مشخصات کاملی از برنامه را مشاهده کنید. سمت راست چند گزینه وجود دارد که با توجه به نوع برنامه (مدیریت شده یا محلی) و زبان برنامه نویسی باید انتخاب کنید. از آنجایی که برنامه ما با زبان سی شارپ ایجاد شده گزینه اول یعنی Debug with Managed only را انتخاب می کنیم.

بعد از انتخاب این گزینه بلافاصله به کدی که باعث ایجاد خطا میشود هدایت می شویم

کلام آخر اینکه سعی کنید تا حد ممکن خودتان خطاها را مدیریت کنید و از ابزارهای خطایاب مانند AppCenter نیز استفاده کنید. اخیرا WPF و WinForm نیز به AppCenter اضافه شده اند.

برنامه نویسیخطایابیآنالیز
شاید از این پست‌ها خوشتان بیاید