< prev index next >
src/hotspot/share/prims/jvmtiExport.cpp
Print this page
@@ -2473,11 +2473,11 @@
typedef jint (JNICALL *OnAttachEntry_t)(JavaVM*, char *, void *);
}
jint JvmtiExport::load_agent_library(const char *agent, const char *absParam,
const char *options, outputStream* st) {
- char ebuf[1024];
+ char ebuf[1024] = {0};
char buffer[JVM_MAXPATHLEN];
void* library = NULL;
jint result = JNI_ERR;
const char *on_attach_symbols[] = AGENT_ONATTACH_SYMBOLS;
size_t num_symbol_entries = ARRAY_SIZE(on_attach_symbols);
@@ -2523,10 +2523,12 @@
if (on_attach_entry == NULL) {
// Agent_OnAttach missing - unload library
if (!agent_lib->is_static_lib()) {
os::dll_unload(library);
}
+ st->print_cr("%s is not available in %s",
+ on_attach_symbols[0], agent_lib->name());
delete agent_lib;
} else {
// Invoke the Agent_OnAttach function
JavaThread* THREAD = JavaThread::current();
{
@@ -2537,10 +2539,12 @@
result = (*on_attach_entry)(&main_vm, (char*)options, NULL);
}
// Agent_OnAttach may have used JNI
if (HAS_PENDING_EXCEPTION) {
+ java_lang_Throwable::print(PENDING_EXCEPTION, st);
+ st->cr();
CLEAR_PENDING_EXCEPTION;
}
// If OnAttach returns JNI_OK then we add it to the list of
// agent libraries so that we can call Agent_OnUnload later.
@@ -2548,15 +2552,20 @@
Arguments::add_loaded_agent(agent_lib);
} else {
delete agent_lib;
}
- // Agent_OnAttach executed so completion status is JNI_OK
- st->print_cr("%d", result);
+ st->print_cr("return code: %d", result);
result = JNI_OK;
}
+ } else {
+ st->print_cr("%s was not loaded.", agent);
+ if (*ebuf != '\0') {
+ st->print_cr("%s", ebuf);
+ }
}
+
return result;
}
#endif // INCLUDE_SERVICES
////////////////////////////////////////////////////////////////////////////////////////////////
< prev index next >