How to debug BOOT_COMPLETE broadcast receiver's "Force Close" crashes?

Vikas Singh picture Vikas Singh · Apr 10, 2012 · Viewed 10.3k times · Source

Since the phone restarts and thus gets disconnected from the Eclipse debugger/LogCat while it's booting up, how do I see where my boot complete broadcast receiver is crashing?

I am performing some actions in the onReceive() of my public class BootCompleteReceiver extends BroadcastReceiver { ... }

This is crashing and popping up a force close dialog when the phone boots. How do I debug this and see where the problem is?

The question holds true for debugging any BOOT_COMPLETE broadcast receivers.

Thanks!

EDIT

Yes, we can see the system logs in LogCat as the phone is booting up but my app Log.d(TAG,"Boot completed") has to wait till it (onReceive) gets triggered but by that time the app crashes because the problem is somewhere in the receiver itself. The app crashes before I can log anything. Also, I cannot use "Run in Debug mode" for a phone that's restarting...

Answer

fklappan picture fklappan · Apr 11, 2012

As i wrote on another thread:

You can emulate all broadcast actions by connecting via adb to the device and open a device shell.

Here we go:

  • open console/terminal and navigating to /platform-tools
  • type "adb shell" or on linux/mac "./adb shell"
  • in the shell type "am broadcast -a android.intent.action.BOOT_COMPLETED" or whatever action you want to fire.

In this way you should be able to debug.

There are a bunch of nice commands coming with adb or the adb shell. Just try it

Regards Flo

EDIT: Using the above method will also reboot the device. To prevent the device from rebooting use am broadcast -a android.intent.action.BOOT_COMPLETED com.example.app. Note the suffix with the application package name to which the broadcast goes. This enables you to send the BOOT_COMPLETED intent to ONLY YOUR app for debugging purposes. – Roel van Uden