Znalazłem również dobry example project do tego. Jak to jest w projekcie można skonfigurować Google Breakpad lubię:
extern "C" {
void Java_com_pluusystem_breakpadjavacall_MainActivity_initNative(JNIEnv* env, jobject obj, jstring filepath)
{
const char *path = env->GetStringUTFChars(filepath, 0);
google_breakpad::MinidumpDescriptor descriptor(path);
exceptionHandler = new google_breakpad::ExceptionHandler(descriptor, NULL, DumpCallback, NULL, true, -1);
}
}
w bok cpp i jak:
// Save Dump Path
initNative(getExternalCacheDir().getAbsolutePath());
w bok java.
Po wykonaniu funkcji bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
będzie można zrobić coś, zanim aplikacja się zawiesi.
Doświadczyłem i znalazłem również numer this, który potwierdza, że w tej funkcji nie można wykonywać wywołań zwrotnych Java w ramach ART tuż pod DVM (przed Androidem 5 - Lollipop).
Czy działa na systemie Android, ponieważ nie obsługuje obsługi wyjątków C++? Chciałbym, żeby to działało !!! – Cipi
Obsługuje obsługę wyjątków w C++. –
Mogę zbudować klienta, kopiując plik android/google_breakpad/Android.mk do katalogu głównego źródła breakpad google, edytując w celu usunięcia pliku ../ .. z pliku .mk i umieszczenia to wszystko w moim katalogu NDK_MODULES, ale nie można zbudować narzędzi hosta, aby rzeczywiście nadać sens mini-zrzutowi, przynajmniej nie używając cygwin. –