Add extra log for debug when UnicodeDecodeError happened (#674)

diff --git a/mobly/controllers/android_device.py b/mobly/controllers/android_device.py
index b9f2b36..38e6eed 100644
--- a/mobly/controllers/android_device.py
+++ b/mobly/controllers/android_device.py
@@ -189,7 +189,11 @@
     Returns:
         A list of android device serial numbers.
     """
-    clean_lines = new_str(device_list_str, 'utf-8').strip().split('\n')
+    try:
+        clean_lines = new_str(device_list_str, 'utf-8').strip().split('\n')
+    except UnicodeDecodeError:
+        logging.warning("unicode decode error, origin str: %s", device_list_str)
+        raise
     results = []
     for line in clean_lines:
         tokens = line.strip().split('\t')
diff --git a/tests/mobly/controllers/android_device_test.py b/tests/mobly/controllers/android_device_test.py
index bd07179..1611bfa 100755
--- a/tests/mobly/controllers/android_device_test.py
+++ b/tests/mobly/controllers/android_device_test.py
@@ -1298,6 +1298,18 @@
             'adb.AdbError or adb.AdbTimeoutError exception raised but not handled.'
         )
 
+    def test_AndroidDevice_parse_parse_device_list_when_decode_error(self):
+        gbk_str = b'\xc4\xe3\xba\xc3'
+        raised = False
+        try:
+            android_device.parse_device_list(gbk_str, "somekey")
+        except UnicodeDecodeError:
+            raised = True
+        self.assertTrue(
+            raised,
+            'did not raise an exception when parsing gbk bytes'
+        )
+
 
 if __name__ == '__main__':
     unittest.main()