Using Adb Logcat with a Real Phone (And Not the Emulator)

Android Debugging with Logcat and Emulator. Is it possible?

You have a few options for viewing the debug log output, assuming you have the SDK installed and your command path set up correctly:

  1. Type adb logcat. The log output from the connected device or running emulator will appear. I usually prefer adb logcat -v time to see the time stamps.

  2. Type ddms. This launches the stand-alone version of DDMS. It has a logcat display at the bottom.

  3. Install the ADT extension for Eclipse, and open the logcat view. (Since you're using NetBeans I assume this isn't what you want to do, but I'm mentioning it for completeness.)

In all cases, the interaction is the same whether you're using a physical device or software emulator, because the ADB daemon conceals the details. Whatever you're doing for the device is also expected to work for the emulator.

If you have a device and emulator connected simultaneously, you can use adb -e logcat for the emulator and adb -d logcat for the device. From stand-alone DDMS or Eclipse, just pick the device or emulator from the pop-up menu.

Why is logcat through ADB different from the system logcat?

Yes, apps can only access their own logs since Android 4.1 for security reasons.

This is expanded on in this Android StackExchange answer, which also mentions you can (allegedly, and in 2013) gain full device log access if you own the device with:

adb shell pm grant <pkg> android.permission.READ_LOGS

Exclude the tag string when using adb logcat in CMD

The log record format is fixed. Every record saved to the log will include all the fields. But you can control which fields get printed out:

-v <format>     Sets the log print format, where <format> is:
--format=<format>
brief color epoch long monotonic printable process raw
tag thread threadtime time uid usec UTC year zone

raw is the format you are looking for

adb logcat -v raw

Filter LogCat to get only the messages from My Application in Android?

Package names are guaranteed to be unique so you can use the Log function with the tag as your package name and then filter by package name:

NOTE: As of Build Tools 21.0.3 this will no longer work as TAGS are restricted to 23 characters or less.

Log.<log level>("<your package name>", "message");

adb -d logcat <your package name>:<log level> *:S

-d denotes an actual device and -e denotes an emulator. If there's more than 1 emulator running you can use -s emulator-<emulator number> (eg, -s emulator-5558)

Example: adb -d logcat com.example.example:I *:S

Or if you are using System.out.print to send messages to the log you can use adb -d logcat System.out:I *:S to show only calls to System.out.

You can find all the log levels and more info here: https://developer.android.com/studio/command-line/logcat.html

http://developer.android.com/reference/android/util/Log.html

EDIT: Looks like I jumped the gun a little and just realized you were asking about logcat in Eclipse. What I posted above is for using logcat through adb from the command line. I'm not sure if the same filters transfer over into Eclipse.



Related Topics



Leave a reply



Submit