Add debug code for saving dex file inputs

Also improve some other logging.

Bug: 13078746
Change-Id: Ic7a7c201b935e2b117ddc38b652cf39152fe42dc
diff --git a/dex2oat/dex2oat.cc b/dex2oat/dex2oat.cc
index dab419f..ce339bf 100644
--- a/dex2oat/dex2oat.cc
+++ b/dex2oat/dex2oat.cc
@@ -1043,6 +1043,21 @@
       }
     }
 
+    const bool kSaveDexInput = false;
+    if (kSaveDexInput) {
+      for (size_t i = 0; i < dex_files.size(); ++i) {
+        const DexFile* dex_file = dex_files[i];
+        std::string tmp_file_name(StringPrintf("/data/local/tmp/dex2oat.%d.%d.dex", getpid(), i));
+        UniquePtr<File> tmp_file(OS::CreateEmptyFile(tmp_file_name.c_str()));
+        if (tmp_file.get() == nullptr) {
+            PLOG(ERROR) << "Failed to open file " << tmp_file_name << ". Try: adb shell chmod 777 /data/local/tmp";
+            continue;
+        }
+        tmp_file->WriteFully(dex_file->Begin(), dex_file->Size());
+        LOG(INFO) << "Wrote input to " << tmp_file_name;
+      }
+    }
+
     // Ensure opened dex files are writable for dex-to-dex transformations.
     for (const auto& dex_file : dex_files) {
       if (!dex_file->EnableWrite()) {