10

Pracuję w aplikacji Windows Store i otrzymuję błąd WinRT, który tak naprawdę nie daje mi żadnych informacji, więc chciałbym wiedzieć, jak rozumieć tego typu błędy.WinRT - Windows Store - WinRT Originate Error - Jak rozszyfrować taki błąd?

Zasadniczo pojawia się błąd na następnej linii, która jest wywoływana wewnątrz OnPointerPressed:

m_gestureRecognizer->ProcessDownEvent(args->GetCurrentPoint(nullptr)); 

Błąd jest:

Pierwsza szansa wyjątek w 0x76F54B32 (KernelBase.dll) w DXAML2. exe: 0x40080201: Błąd początkowy WinRT (parametry: 0x80070057, 0x00000044, 0x03CEE72C).

Ten błąd nie stosować się pojawiać, jedyne co zmieniłem to, że ta linia jest teraz owinięte w klauzuli if który sprawdza, czy bieżący wskaźnik za PointerId jest taki sam jak jeden mam zapisane tylko używając == takich jak:

if(args->GetCurrentPoint(nullptr)->PointerId == m_UIPointerID) 

Nie mam pojęcia, dlaczego tak się zaczęło.

Więc moje pytanie jest na dwie części: Bardziej ogólnie

  1. , w jaki sposób mogę zrozumieć, co się błąd takie jak wyżej sposób?
  2. A czy ktoś wie, że ten błąd nagle zaczął się dziać teraz, gdy sprawdzam wskaźnik pointer?

Dzięki za poświęcony czas.

P.S. Sądzę, że inna rzecz, która się zmieniła, to to, że na ekranie będą już 2 wskaźniki (ten, który zostanie wepchnięty do tego GestureRecognizer), a także inny, stąd sprawdzanie PointerId.

+1

Mam ten sam problem. Te szalenie zawiłe błędy, które nie mają absolutnie nic wspólnego. Po co im raportować/rzucać, jeśli nie ma sposobu, aby dowiedzieć się, co jest nie tak. – Pavel

+1

W Twoim pytaniu widoczny jest kod błędu Windows. 0x80070057 = E_INVALIDARG = Jeden lub więcej argumentów jest nieprawidłowych –

Odpowiedz

1

Jak powiedział Raman - dobrze jest przejrzeć przedstawione wartości heksadecymalne. Pierwszym z nich jest lokalizacja pamięci, która nie powie wiele bez symboli/źródeł, które w tym przypadku są zgłaszane bezpośrednio przez system Windows. Być może symbole publiczne mogą rzucić nieco więcej światła na skąd pochodzi błąd, ale wyszukiwania kodu błędu są bardziej pomocne.

Jeśli Bing for 0x80070057 znajdziesz artykuł MSDN na Common HRESULT Values który wymienia

E_INVALIDARG: Jeden lub więcej argumentów nie są ważne: 0x80070057

To nie daje Ci wszystkie szczegóły oczywiście, więc Wracaj do teorii. Być może możesz zadzwonić tylko pod numer args->GetCurrentPoint(nullptr) i powinieneś zapisać/użyć ponownie wartość? Być może rozpoznawanie gestów nie jest poprawnie skonfigurowane? Może okno aplikacji nie jest widoczne w momencie, gdy wyjątek zostanie zgłoszony lub wątek jest nieprawidłowy. Być może brakowało niektórych oczekiwanych wywołań do rozpoznawania gestów z powodu filtrowania ich za pomocą tych stwierdzeń "if".

11

„Jak rozszyfrować takiego błędu” ...

za jakiekolwiek błędy WinRT pochodzą, można wziąć trzeci adres z listy parametrów (w przykładzie, 0x03CEE72C) i znaleźć opis swojego błędu w oknie pamięci.

podczas debugowania, złamać, gdy zostanie zgłoszony błąd i otworzyć okno pamięci poprzez Debug -> Windows -> Pamięć -> Pamięć 1

skopiować i wkleić adres, aby uzyskać błąd „łatwe do znalezienia” wiadomość.

+0

Brak opcji Memory dla Visual Studio 2015 – Denny

Powiązane problemy