Dump profile checksums

Also dump profile checksums. This helps diagnose checksum mismatches.

Test: manual
Bug: 70292748
Change-Id: Iaab4b34378240a265d11d196dcad6db12dc3545d
diff --git a/profman/profile_assistant_test.cc b/profman/profile_assistant_test.cc
index 9494f04..72c285a 100644
--- a/profman/profile_assistant_test.cc
+++ b/profman/profile_assistant_test.cc
@@ -1147,18 +1147,18 @@
   // Check the actual contents of the dump by looking at the offsets of the methods.
   for (uint32_t m : hot_methods) {
     const size_t pos = output.find(std::to_string(m) + "[],", hot_offset);
-    ASSERT_NE(pos, std::string::npos);
-    EXPECT_LT(pos, startup_offset);
+    ASSERT_NE(pos, std::string::npos) << output;
+    EXPECT_LT(pos, startup_offset) << output;
   }
   for (uint32_t m : startup_methods) {
     const size_t pos = output.find(std::to_string(m) + ",", startup_offset);
-    ASSERT_NE(pos, std::string::npos);
-    EXPECT_LT(pos, post_startup_offset);
+    ASSERT_NE(pos, std::string::npos) << output;
+    EXPECT_LT(pos, post_startup_offset) << output;
   }
   for (uint32_t m : post_startup_methods) {
     const size_t pos = output.find(std::to_string(m) + ",", post_startup_offset);
-    ASSERT_NE(pos, std::string::npos);
-    EXPECT_LT(pos, classes_offset);
+    ASSERT_NE(pos, std::string::npos) << output;
+    EXPECT_LT(pos, classes_offset) << output;
   }
 }
 
diff --git a/runtime/jit/profile_compilation_info.cc b/runtime/jit/profile_compilation_info.cc
index f5c2715..7c21916 100644
--- a/runtime/jit/profile_compilation_info.cc
+++ b/runtime/jit/profile_compilation_info.cc
@@ -1675,6 +1675,7 @@
       os << (multidex_suffix.empty() ? kFirstDexFileKeySubstitute : multidex_suffix);
     }
     os << " [index=" << static_cast<uint32_t>(dex_data->profile_index) << "]";
+    os << " [checksum=" << std::hex << dex_data->checksum << "]" << std::dec;
     const DexFile* dex_file = nullptr;
     if (dex_files != nullptr) {
       for (size_t i = 0; i < dex_files->size(); i++) {