آموزش گرفتن انواع لاگ در اندروید
اندروید همواره دستوراتی را که توسط برنامهها و سرویسهای مختلف دریافت میکند به شکل گزارش به ثبت آن میپردازد؛ بنابراین وقتی خطایی رخ دهد، گزارش آن تحت عنوان log موجود خواهد بود. در مواقعی که هنگام کار با گوشی اندرویدی خود دچار مشکل در اجرای یک اپلیکیشن میشوید یا در هر قسمتی از گوشی خطا دریافت میکنید، چارهی کار گزارش خطا به توسعهدهندهی اپلیکیشن یا رامی است که در حال استفاده از آن هستید.
اگر از رامهای کاستوم استفاده کرده باشید، حتما تجربه کردهاید که اکثر مواقع وقتی باگ یا مشکلی نرمافزاری را گزارش میکنید، توسعهدهندهی رام از شما درخواست لاگ میکند؛ چرا که بدون داشتن لاگ و اطلاع از این که چه اتفاقی در گوشی شما افتاده و چه چیزی باعث خطا شده است، تشخیص و حل مشکل بسیار دشوار خواهد بود.
در این مقاله از زومیت، انواع روشهای ذخیرهی لاگ در گوشیهای روت شده و روت نشده را آموزش میدهیم و به نحوهی تهیهی لاگ در مواقعی که گوشی هنگ میکند یا اساسا بالا نمیآید نیز میپردازیم.
بخش اول: لاگ گوشیهای روت شده
در گوشیهای روت شده، انجام کار به سادگی نصب یک اپلیکیشن و استفاده از آن است؛ یکی از اپلیکیشنهای ثبت لاگ را نصب کرده و دسترسی روت را به آن بدهید تا به گزارش اتفاقات درون گوشی شما دسترسی داشته باشد و بتواند آن را ذخیره کند. در این آموزش اپلیکیشن aLogcat را معرفی میکنیم؛ اما شما میتوانید از اپلیکیشنهای جدیدتری مانند Matlog نیز استفاده کنید. شکل کار در هر دو اپلیکیشن به یک شکل خواهد بود. توجه داشته باشید که ممکن است اپلیکیشنهایی در پلی استور وجود داشته باشند که ادعا کنند بدون دسترسی روت قادر به ثبت لاگ هستند؛ اما این اپلیکیشنها برای اندروید ۳.۰ و پایینتر طراحی شدهاند؛ این در حالی است که طبق آمار ۹۶.۸ درصد از دستگاههای اندرویدی از اندروید ۴.۰ و بالاتر استفاده میکنند؛ پس میتوان گفت که در حال حاضر استفاده از اپلیکیشن برای ذخیرهی لاگ مستلزم داشتن دسترسی روت است.
گام اول: نصب اپلیکیشن
برای نصب اپلیکیشن رایگان aLogcat میتوانید از لینک زیر استفاده کنید.
گام دوم: ذخیرهی لاگکت
پس از نصب اپلیکیشن، آیکون آن را لمس کنید تا برنامه اجرا شود. پس از اجرای برنامه پنجرهای باز خواهد شد که به شما اطلاع میدهد که برنامه درخواست دسترسی روت دارد. با زدن روی Grant این مجوز را به اپلیکیشن بدهید. در نوار بالای برنامه دکمهای وجود دارد که شبیه دکمههای pause و play در موزیکپلیرها است. حالت پلی به معنی آغاز ثبت گزارش خواهد بود. برای ثبت گزارش خطای مورد نظر، برنامه را در حالت پلی قرار دهید و به قسمتی که در آن دچار مشکل میشوید رفته و به اصطلاح صحنه را بازسازی کنید تا گزارش خطای آن ثبت شود. سپس، به برنامهی aLogcat برگشته و ثبت گزارش را متوقف کنید. از قسمت منوی برنامه یعنی سه نقطهی بالا سمت راست، میتوانید طبق تصویر گزارش را save یا ذخیره کنید.
لاگکت به شکل یک فایل کمحجم با فرمت txt در فولدر aLogcatfolder در حافظهی داخلی گوشی شما ذخیره میشود. حال کافی است هنگام گزارش مشکل خود به توسعهدهندهی رام، این فایل را نیز برای وی ضمیمه و ارسال کنید.
روش دوم: استفاده از ADB برای تمام گوشیها (روت شده و روت نشده)
ویژگی ADB امکانی است که گوگل برای توسعهدهندگان اندروید فراهم کرده است. برای استفاده از این امکان وجود چند مورد الزامی است.
- رایانه مجهز به درایورهای ADB
- فعال بودن گزینهی ADB و USB debugging در گوشی
- کابل یو اس بی
نصب درایور ADB
اینستالر یا نصبکنندهی درایور adb و فستبوت برای ویندوز را میتوانید از این لینک دریافت کنید. سپس روی فایل دانلود شده راست کلیک کرده با کلیک روی Run as administrator آن را اجرا کنید. در صفحهی آبیرنگی که پیش روی شما قرار میگیرد، تمامی سؤالها را با زدن کلیدهای Y و اینتر پاسخ مثبت بدهید. این نصب کننده درایورهای adb، فست بوت و CMD را برای شما نصب خواهد کرد. بهطوری که از تمام دایرکتوریها به دستورات آنها دسترسی داشته باشید.
راهاندازی ADB در مک و لینوکس
اگر از مک یا لینوکس استفاده میکنید، خبری از اینستالر نخواهد بود؛ در عوض باید از دستور ترمینال استفاده کنید. با این کار قادر خواهید بود از تمام دایرکتوریها به adb دسترسی داشته باشید و نیازی به وارد کردن دستور cd برای راهاندازی دستورات adb نخواهید داشت.
برای انجام نصب نیاز به اسکریپتی دارید که دانلود کردنی نیست. این وظیفه را خود ترمینال بر عهده میگیرد. کافی است پس از اطمینان از اتصال اینترنت دستور زیر را در ترمینال وارد کنید.
bash <(curl -s https://raw.githubusercontent.com/corbindavenport/nexus-tools/master/install.sh)
در صورتی که دستور فوق به هر دلیل عمل نکرد میتوانید از این دستور استفاده کنید:
cd ~ && curl -s -o ./install.sh "http://github.com/corbindavenport/nexus-tools/raw/master/install.sh" -LOk && chmod +x ./install.sh && ./install.sh && rm ./install.sh
پس از نصب موفقیتآمیز درایورهای ADB کار ما موقتا با رایانه تمام میشود و نوبت به گوشی و تنظیمات usb debugging میرسد.
آشکارسازی Developer options و فعال کردن USB Debugging
بسیاری از برنامههای ابزاری اندروید از Android Debug Bridge یا همان ADB برای ارسال دستور از رایانه به گوشی یا تبلت استفاده میکنند. در واقع ADB این اجازه را به برنامههای یادشده میدهد تا بدون داشتن دسترسی روت از دستورهای ترمینال استفاده کنند. برای برقراری اتصال ADB بین رایانه و گوشی باید USB debugging را در دستگاه اندرویدی خود فعال کنید.
آشکارسازی Developer Options
روش انجام این کار ممکن است وابسته به دستگاه شما کمی متفاوت باشد؛ اما کلیت کار در تمامی دستگاههای اندرویدی به یک شکل است.
برای شروع به منوی تنظیمات گوشی یا تبلت خود بروید. معمولا پایینترین گزینه About phone ،About tablet یا About device است. روی این گزینه بزنید و از گزینههای موجود Build number را هفت مرتبه پشت سر هم لمس کنید.
در این لحظه پیام موقتی را روی صفحه مشاهده خواهید کرد مبنی بر اینکه به عنوان توسعهدهنده شناخته شدید؛ این یعنی بخش پنهان دولوپر آپشنز در منوی تنظیمات برای شما نمایان شد.
فعال کردن یو اس بی دیباگینگ
بعد از ظاهر شدن دولوپر آپشنز در پایین منوی اصلی تنظیمات، روی آن بزنید و از بین گزینههای موجود تیک مقابل USB debugging را بزنید و در پنجرهی باز شده OK را لمس کنید.
در این مرحله، هم رایانه و هم دستگاه اندرویدی شما ملزومات لازم برای استفاده از ADB را پیدا کردهاند. نوبت میرسد به اتصال یو اس بی و تنظیمات نوع اتصال.
اتصال یو اس بی در حالت USB Debugging
دستگاه اندرویدی خود را از طریق کابل یو اس بی به رایانه یا لپتاپ وصل کنید. در این لحظه احتمالا پیامی روی صفحهی دستگاه اندرویدی خود مشاهده میکنید که از شما سؤال میکند آیا اجازهی اتصال این رایانه به گوشی در حالت دیباگینگ را میدهید یا خیر. با لمس خانهی مقابل عبارت Always allow from this computer و تیکدار کردن آن روی OK بزنید تا مجوز دائم اتصال رایانه و دستگاه اندرویدی خود را تأیید کرده باشید.
چنانچه پیامی را که به آن اشاره شد، مشاهده نکردید، احتمالا تداخلی در قسمت اتصال به عنوان فضای ذخیرهسازی وجود دارد. اگر چنین باشد، برای رفع آن باید به منوی تنظیمات گوشی رفته و Storage را انتخاب کنید. در این قسمت طبق تصویر، روی دکمهی سهنقطه، در بالا سمت راست زده و USB computer connection را لمس کنید.
در این قسمت اگر (Media device (MTP فعال بود، آن را به (Camera (PTP تغییر دهید تا مجددا پیام Allow USB debugging که دفعهی قبل موفق به مشاهدهی آن نشده بودید، ظاهر شود.
درصورتیکه مراحل قبل را به درستی انجام داده باشید، با فعال کردن یو اس بی دیباگینگ، همه چیز محیای گرفتن انواع لاگ خواهد بود.
بخش اول: لاگکت
در اکثر مواقع شما برای گزارش یک خطا به لاگکت نیاز دارید. لاگکت به شما میگوید که کدام برنامهها درست کار نمیکنند و علت آن چیست. باید بدانید که سیستمعامل شما به کمک اپلیکیشنها کار میکند؛ شمارهگیر، پیامک، تنظیمات و... همه توسط اپلیکیشنها اجرا میشوند. بنابراین، هر گاه توقف ناگهانی هر بخشی از سیستمعامل را مشاهده کردید، با گرفتن لاگکت قادر به ثبت علت آن خواهید بود.
برای گرفتن لاگکت به وسیلهی ADB پس از محیا کردن پیشنیازهایی که بالاتر توضیح داده شد، یک فولدر روی دسکتاپ ایجاد کرده و در محیط آن با گرفتن شیفت، راستکلیک کنید. سپس open command prompt را زده و دستور زیر را برای اطمینان از برقراری ارتباط بین سیستم و گوشی یا تبلت وارد کنید.
adb devices
در صورت برقراری ارتباط، سریال نامبر گوشی شما در cmd قابل رؤیت خواهد بود. در این صورت، با وارد کردن دستور زیر میتوانید لاگکت بگیرید.
adb logcat > logcat.txt
برای اتمام فرایند لاگ گرفتن از کلیدهای Ctrl به همراه C استفاده کنید.
بخش دوم: Dmesg
این نوع لاگ در مواقع بحرانیتر مورد استفاده قرار میگیرد. به طور مثال، وقتی که وایفای کار نمیکند یا صفحه روشن نمیشود و مشکلاتی از این دست که به کرنل مربوط میشوند از لاگ Dmesg برای بررسی مشکل استفاده میشود. برای گرفتن لاگ Dmesg نیز برقراری ارتباط از طریق ADB است. به همین جهت، انجام مراحل مربوط به ADB در این مورد نیز الزامی است.
کاری که لاگ Dmesg انجام میدهد، ارائهی گزارشی از اتفاقات کرنل است تا توسعهدهنده بتواند متوجه شود که کدام درایور به درستی کار نمیکند. از آنجایی که با لینوکس روبهرو هستیم، گزارش عملکرد کرنل در پی بردن به اینکه کدام سختافزار به درستی کار نمیکند اهمیت بالایی دارد.
برای گرفتن لاگ dmesg فارغ از اینکه از چه سیستمعاملی استفاده میکنید، میتوانید دستور زیر را در cmd وارد کنید.
adb shell dmesg > dmesg.txt
بخش سوم: گزارش last_kmsg
آخرین نوع لاگ گرفتن از اندروید last_kmsg است. وقتی کرنل اندروید کرش میکند و دستگاه به کلی از اجرا باز میایستد یا ناگهان ریبوت میشود، تنها راهی که میتوان با آن علت را پیدا کرد بررسی گزارش last_kmsg است. این گزارش در مواقعی که گوشی شما دچار ریبوتهای ناگهانی و هنگ کردن و سایر رفتارهای غیرعادی میشود مورد استفاده قرار میگیرد. این رفتارها معمولا به این دلیل انجام میشوند که کرنل قصد انجام کاری را دارد؛ اما از عهدهی آن برنمیآید. توسعهدهندگان برای رفع چنین مشکلاتی شدیدا به گزارش last_kmsg نیاز دارند.
برای گرفتن این گزارش کافی است ضمن اطمینان از برقراری ارتباط ADB بین رایانه و دستگاه اندرویدی، دستور زیر را وارد کنید.
adb shell cat /proc/last_kmsg > kmsg.txt
گزارش در همان مسیری که cmd را از آن اجرا کردید ذخیره خواهد شد.
در پایان، اگر فایل متنی گزارش خود را باز کنید، خواهید دید که خطوط گزارش هر کدام با حرفی خاص آغاز شدهاند. اگر مایل هستید اطلاعاتی کلی از گزارش ثبت شدهی خود به دست آورید، میتوانید از جدول زیر به عنوان راهنما استفاده کنید.
حرف آغازین | معنی | توضیح |
---|---|---|
E | ارور یا خطا | نشاندهندهی خطاهای نه چندان مهم در اجرا است. |
F | خطای جدی | نشاندهندهی خطاهای جدی هنگام اجرا است. |
I | اطلاعات | سطری که با I شروع میشود گزارش طبیعی کار سیستم را نشان میدهد؛ اما میتواند شامل خطاها نیز باشد. |
D | دالویک | این سطر نشاندهندهی فرآیندهای دالویک در سیستم است؛ اما میتواند مشکلات موجود در آنها را نیز شامل شود. |
W | هشدار | نشاندهندهی خطاهای نه چندان جدی مانند کمبود یک فایل منبع یا تداخل مسیرها است. |
V | وربوز | اساسا تمام آنچه که دستگاه در حال انجام آن است. |
امیدواریم از این آموزش استفادهی کافی برده باشید. لطفا نظرات و تجربیات خود را در قسمت دیدگاهها با زومیت به اشتراک بگذارید.