Improve logging for GetResolvedMethod's failing to get an inlined_method

We were logging the wrong thing by using method->GetDexFile() rathter than dex_cache->GetDexFile(). We can take this opportunity and update the logging as a whole for this particular case.

Test: ART tests
Bug: 206513969, 154012332
Change-Id: I048035cc86d3df629bc9cc375057e8782acc92b3
diff --git a/runtime/entrypoints/entrypoint_utils-inl.h b/runtime/entrypoints/entrypoint_utils-inl.h
index 87185c6..3333b5f 100644
--- a/runtime/entrypoints/entrypoint_utils-inl.h
+++ b/runtime/entrypoints/entrypoint_utils-inl.h
@@ -102,8 +102,18 @@
 
     if (UNLIKELY(inlined_method == nullptr)) {
       LOG(FATAL) << "Could not find an inlined method from an .oat file: "
-                 << method->GetDexFile()->PrettyMethod(method_index) << " . "
-                 << "This must be due to duplicate classes or playing wrongly with class loaders";
+                 << dex_cache->GetDexFile()->PrettyMethod(method_index) << " ("
+                 << dex_cache->GetDexFile()->GetLocation() << "/"
+                 << static_cast<const void*>(dex_cache->GetDexFile()) << ") in "
+                 << method->PrettyMethod() << " (" << method->GetDexFile()->GetLocation() << "/"
+                 << static_cast<const void*>(method->GetDexFile())
+                 << "). The outermost method in the chain is: " << outer_method->PrettyMethod()
+                 << " (" << outer_method->GetDexFile()->GetLocation() << "/"
+                 << static_cast<const void*>(outer_method->GetDexFile())
+                 << "). MethodInfo: method_index=" << std::dec << method_index
+                 << ", is_in_bootclasspath=" << std::boolalpha
+                 << (method_info.GetDexFileIndexKind() == MethodInfo::kKindBCP)
+                 << ", dex_file_index=" << std::dec << method_info.GetDexFileIndex() << ".";
       UNREACHABLE();
     }
     DCHECK(!inlined_method->IsRuntimeMethod());