Mamy niedeterministyczne System.AccessViolationException wyrzucony z natywnego kodu. Trudno to odtworzyć, ale czasami się to zdarza. Nie jestem pewien, czy mogę "po prostu usunąć błąd", ponieważ czas potrzebny na naruszenie zasad dostępu wynosi około 2 godzin i nie ma gwarancji, że dojdzie do naruszenia zasad dostępu.Określić przyczynę System.AccessViolationException
Natywna biblioteka jest używana przez zarządzane opakowania. Jest używany od Javy przez JNI i jest używany od .NET do IKVM'ed JNI. Problem został odtworzony tylko z kodu IKVM, ale zestawy danych są inne i nie ma możliwości przetestowania aplikacji java z danymi używanymi przez aplikację IKVM.
Mam źródła wszystkiego, ale (jeśli to możliwe) chcę uniknąć wprowadzania dużej liczby zmian.
Wierzę, że macierzysty stos wywołań zapewni wystarczającą ilość informacji o przyczynie tego naruszenia zasad dostępu.
Czy istnieją skuteczne metody określania przyczyny tego naruszenia zasad dostępu?
Uważam, że idealnym rozwiązaniem dla mnie są pewne zmiany w kodzie lub środowisku procesowym, więc zawiesi się z zrzutem pamięci w przypadku tego naruszenia dostępu, więc mogę wprowadzić te zmiany i po prostu czekać.
Hm .. Zmieniłem swój kod macierzysty, więc na pewno ma on naruszenie zasad dostępu i przekompilował go za pomocą symboli debugowania. Kiedy rozpocząłem proces normalnie i zainstalowałem debuggera Visual Studio. Dodałem punkt przerwania do rzucania wyjątku AccessViolationException, ale nie został on przechwycony. Jakieś sugestie? – okutane
OK, okaże się, że punkt przerwania powinien być naruszeniem dostępu do systemu Win32. – okutane