پاسخ داده شده: گزارش کراش سمت کلاینت در C++
3- همانطور که دیدید کلاس CrashHandler یک کلاس singlton هستش که از طریق متد init مشخص می کنیم که فایل minidump در چه مسیری ذخیره شه من مسیر c:\dump را انتخاب کردم به صورت زیر:
#if defined(Q_OS_WIN32) Atomix::CrashHandler::instance()->Init("c:\dump"); #elif defined(Q_OS_LINUX) Atomix::CrashHandler::instance()->Init("/Users/dev/dump"); #elif defined(Q_OS_MAC) Atomix::CrashHandler::instance()->Init("/Users/User/dump"); #endif
4- در این مرحله نوبت به ساخت فایل symbol هسنش چون اگر ساخته نشه symbol ها توی کد به صورت آدرس حافظه دیده میشه .برای اینکار برنامه رو بیلد کنید تا فایل exe , pdb مجدد ساخته شه حال از یکی از utility های breakpad به نام dump_syms.exe که هنگام بیلدش ساخته شده فایل sym را ایجاد کنید به صورت زیر:
dump_syms.exe MyClient.exe > MyClient.sym
5- کلاینت را در سیستم مقصد اجرا کنید در صورت کرش کردن برنامه در مسیر از قبل مشخص شده (c:\dump) فایل minidump ساخته میشه
6- این فایل را سمت دیباگر انتقال بدید و سپس تو vs منوی new->file فایل minidump موردنظر را انتخاب کنید پنجره ای باز میشه که اطلاعات در مورد کلاینت و مجموعه کتبخانه های مورد استفاده میده سپس در ایتدا گزینه ste symbol path را انتخاب کنید و مسیر فایل sym را معرفی کنید و سپس گزینه debug with native only را انتخاب کنید حالا می تونید نقطه کرش را از طریق call stack بررسی کنید.
موفق باشید