diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 847038f..bbe3f78 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -84,8 +84,8 @@
         SharedPreferences.OnSharedPreferenceChangeListener {
     private static final String TAG = "LatinIME";
     private static final boolean PERF_DEBUG = false;
-    private static final boolean DEBUG = LatinImeLogger.sDBG;
     private static final boolean TRACE = false;
+    private static boolean DEBUG = LatinImeLogger.sDBG;
 
     private static final int DELAY_UPDATE_SUGGESTIONS = 180;
     private static final int DELAY_UPDATE_OLD_SUGGESTIONS = 300;
@@ -514,6 +514,9 @@
         final KeyboardSwitcher switcher = mKeyboardSwitcher;
         LatinKeyboardView inputView = switcher.getInputView();
 
+        if(DEBUG) {
+            Log.d(TAG, "onStartInputView: " + inputView);
+        }
         // In landscape mode, this method gets called without the input view being created.
         if (inputView == null) {
             return;
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index da46d26..ffce66e 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -41,7 +41,7 @@
 import java.util.Map;
 
 public class SubtypeSwitcher {
-    private static final boolean DBG = LatinImeLogger.sDBG;
+    private static boolean DBG = LatinImeLogger.sDBG;
     private static final String TAG = "SubtypeSwitcher";
 
     private static final char LOCALE_SEPARATER = '_';
@@ -163,6 +163,12 @@
     }
 
     private void updateShortcutIME() {
+        if (DBG) {
+            Log.d(TAG, "Update shortcut IME from : "
+                    + (mShortcutInfo == null ? "<null>" : mShortcutInfo.getId()) + ", "
+                    + (mShortcutSubtype == null ? "<null>" : (mShortcutSubtype.getLocale()
+                            + ", " + mShortcutSubtype.getMode())));
+        }
         // TODO: Update an icon for shortcut IME
         Map<InputMethodInfo, List<InputMethodSubtype>> shortcuts =
                 mImm.getShortcutInputMethodsAndSubtypes();
@@ -176,6 +182,12 @@
             mShortcutSubtype = subtypes.size() > 0 ? subtypes.get(0) : null;
             break;
         }
+        if (DBG) {
+            Log.d(TAG, "Update shortcut IME to : "
+                    + (mShortcutInfo == null ? "<null>" : mShortcutInfo.getId()) + ", "
+                    + (mShortcutSubtype == null ? "<null>" : (mShortcutSubtype.getLocale()
+                            + ", " + mShortcutSubtype.getMode())));
+        }
     }
 
     // Update the current subtype. LatinIME.onCurrentInputMethodSubtypeChanged calls this function.
diff --git a/java/src/com/android/inputmethod/voice/VoiceInput.java b/java/src/com/android/inputmethod/voice/VoiceInput.java
index ffa349f..20211d4 100644
--- a/java/src/com/android/inputmethod/voice/VoiceInput.java
+++ b/java/src/com/android/inputmethod/voice/VoiceInput.java
@@ -17,6 +17,7 @@
 package com.android.inputmethod.voice;
 
 import com.android.inputmethod.latin.EditingUtils;
+import com.android.inputmethod.latin.LatinImeLogger;
 import com.android.inputmethod.latin.R;
 
 import android.content.ContentResolver;
@@ -58,6 +59,7 @@
     private static final String EXTRA_CALLING_PACKAGE = "calling_package";
     private static final String EXTRA_ALTERNATES = "android.speech.extra.ALTERNATES";
     private static final int MAX_ALT_LIST_LENGTH = 6;
+    private static boolean DBG = LatinImeLogger.sDBG;
 
     private static final String DEFAULT_RECOMMENDED_PACKAGES =
             "com.android.mms " +
@@ -313,8 +315,11 @@
      * @param swipe whether this voice input was started by swipe, for logging purposes
      */
     public void startListening(FieldContext context, boolean swipe) {
+        if (DBG) {
+            Log.d(TAG, "startListening: " + context);
+        }
         mState = DEFAULT;
-        
+
         Locale locale = Locale.getDefault();
         String localeString = locale.getLanguage() + "-" + locale.getCountry();
 
