diff --git a/res/values/strings.xml b/res/values/strings.xml
index 077f571..1b86659 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3431,6 +3431,8 @@
     <string name="allow_mock_location">Allow mock locations</string>
     <!-- setting Checkbox summary whether to allow mock locations  -->
     <string name="allow_mock_location_summary">Allow mock locations</string>
+    <!-- Setting Checkbox title whether to enable view attribute inspection -->
+    <string name="debug_view_attributes">Enable view attribute inspection</string>
     <!-- Title of warning dialog about the implications of enabling USB debugging -->
     <string name="adb_warning_title">Allow USB debugging?</string>
     <!-- Warning text to user about the implications of enabling USB debugging -->
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 2a1a5bb..807ae8b 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -86,6 +86,10 @@
             android:title="@string/allow_mock_location"
             android:summary="@string/allow_mock_location_summary"/>
 
+        <CheckBoxPreference
+                android:key="debug_view_attributes"
+                android:title="@string/debug_view_attributes" />
+
         <PreferenceScreen android:key="debug_app"
                 android:title="@string/debug_app" />
 
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 11dc3c6..2cffe28 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -110,6 +110,7 @@
     private static final String DEBUG_APP_KEY = "debug_app";
     private static final String WAIT_FOR_DEBUGGER_KEY = "wait_for_debugger";
     private static final String VERIFY_APPS_OVER_USB_KEY = "verify_apps_over_usb";
+    private static final String DEBUG_VIEW_ATTRIBUTES =  "debug_view_attributes";
     private static final String STRICT_MODE_KEY = "strict_mode";
     private static final String POINTER_LOCATION_KEY = "pointer_location";
     private static final String SHOW_TOUCHES_KEY = "show_touches";
@@ -187,6 +188,7 @@
     private CheckBoxPreference mBtHciSnoopLog;
     private CheckBoxPreference mEnableOemUnlock;
     private CheckBoxPreference mAllowMockLocation;
+    private CheckBoxPreference mDebugViewAttributes;
 
     private PreferenceScreen mPassword;
     private String mDebugApp;
@@ -295,6 +297,7 @@
             mEnableOemUnlock = null;
         }
         mAllowMockLocation = findAndInitCheckboxPref(ALLOW_MOCK_LOCATION);
+        mDebugViewAttributes = findAndInitCheckboxPref(DEBUG_VIEW_ATTRIBUTES);
         mPassword = (PreferenceScreen) findPreference(LOCAL_BACKUP_PASSWORD);
         mAllPrefs.add(mPassword);
 
@@ -513,6 +516,8 @@
         }
         updateCheckBox(mAllowMockLocation, Settings.Secure.getInt(cr,
                 Settings.Secure.ALLOW_MOCK_LOCATION, 0) != 0);
+        updateCheckBox(mDebugViewAttributes, Settings.Global.getInt(cr,
+                Settings.Global.DEBUG_VIEW_ATTRIBUTES, 0) != 0);
         updateHdcpValues();
         updatePasswordSummary();
         updateDebuggerOptions();
@@ -1019,7 +1024,7 @@
     private void writeUSBAudioOptions() {
         Settings.Secure.putInt(getContentResolver(),
                 Settings.Secure.USB_AUDIO_AUTOMATIC_ROUTING_DISABLED,
-                    mUSBAudio.isChecked() ? 1 : 0);
+                mUSBAudio.isChecked() ? 1 : 0);
     }
 
     private void updateForceRtlOptions() {
@@ -1380,6 +1385,10 @@
             Settings.Secure.putInt(getActivity().getContentResolver(),
                     Settings.Secure.ALLOW_MOCK_LOCATION,
                     mAllowMockLocation.isChecked() ? 1 : 0);
+        } else if (preference == mDebugViewAttributes) {
+            Settings.Global.putInt(getActivity().getContentResolver(),
+                    Settings.Global.DEBUG_VIEW_ATTRIBUTES,
+                    mDebugViewAttributes.isChecked() ? 1 : 0);
         } else if (preference == mDebugAppPref) {
             startActivityForResult(new Intent(getActivity(), AppPicker.class), RESULT_DEBUG_APP);
         } else if (preference == mWaitForDebugger) {
