10

Ich arbeite an einer Windows Store-App und bekomme einen WinRT-Fehler, der mir keine Informationen liefert, daher würde ich gerne wissen, wie man diese Art von Fehlern versteht.WinRT - Windows Store - WinRT Erstellfehler - Wie entziffern Sie einen solchen Fehler?

Grundsätzlich habe ich den Fehler in der folgenden Zeile, das im Inneren OnPointerPressed genannt wird:

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

Der Fehler ist:

Erste-Chance-Ausnahme bei 0x76F54B32 (KernelBase.dll) in DXAML2. exe: 0x40080201: Fehler bei WinRT-Ursprung (Parameter: 0x80070057, 0x00000044, 0x03CEE72C).

Dieser Fehler verwendet nicht das einzige, was ich verändert zu erscheinen, habe, ist, dass diese Linie jetzt in einer if-Klausel eingewickelt wird, die, wenn der aktuelle Zeiger des Tests ist PointerId das gleiche wie ein ich gerade gespeichert haben using == wie:

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

Ich habe keine Ahnung, warum das angefangen hat zu geschehen.

Also meine Frage ist in zwei Teilen:

  1. Allgemeiner gesagt, wie ich verstehe, was ein Fehler wie die obigen Mittel?
  2. Und weiß jemand, dass dieser Fehler plötzlich jetzt passiert, dass ich die pointerId überprüfe?

Danke für Ihre Zeit.

P.S. Ich denke, eine andere Sache, die sich geändert hat, ist, dass es bereits zwei Zeiger auf dem Bildschirm gibt (derjenige, der in diesen GestureRecognizer geschoben wird) sowie einen weiteren, daher die PointerId-Prüfung.

+1

Ich habe das gleiche Problem. Diese wahnsinnig verschachtelten Fehler, die absolut nichts bedeuten. Was ist der Punkt für sie, sie sogar zu melden/zu werfen, wenn es keine Möglichkeit gibt, herauszufinden, was falsch ist. – Pavel

+1

In Ihrer Frage ist ein Windows-Fehlercode sichtbar. 0x80070057 = E_INVALIDARG = Ein oder mehrere Argumente sind nicht gültig –

Antwort

1

Wie Raman sagte - es ist gut, die gezeigten Hex-Werte nachzuschlagen. Der erste ist der Speicherort, der Ihnen ohne die Symbole/Quelle, die in diesem Fall direkt von Windows gemeldet wird, nicht viel erzählen wird. Vielleicht können die öffentlichen Symbole mehr Aufschluss darüber geben, woher der Fehler kam, aber die Fehlercodes sind hilfreicher.

Wenn Sie Bing for 0x80070057 erhalten Sie einen MSDN-Artikel auf Common HRESULT Values finden, die

E_INVALIDARG aufgeführt: Ein oder mehrere Argumente sind nicht gültig: 0x80070057

Es ist nicht Sie alle Details natürlich nicht geben, so dass Sie geh 'ab, um zu theoretisieren. Vielleicht können Sie nur einmal args->GetCurrentPoint(nullptr) anrufen und Sie sollten den Wert speichern/wiederverwenden? Vielleicht ist die Gestenerkennung nicht korrekt konfiguriert? Vielleicht ist das App-Fenster zu dem Zeitpunkt, zu dem die Ausnahme ausgelöst wird oder der Thread falsch ist, nicht sichtbar. Vielleicht wurden einige erwartete Anrufe zu Gestenerkennung verpasst, weil diese mit diesen "if" Aussagen herausgefiltert wurden.

11

„Wie einen solchen Fehler entziffern“ ...

Für WinRT Fehler entstehen, können Sie die dritte Adresse in der Parameterliste (in Ihrem Beispiel 0x03CEE72C) nehmen, und eine Beschreibung Ihrer Fehler finden im Speicherfenster.

Während des Debuggens brechen, wenn Ihr Fehler ausgelöst wird, und öffnen Sie das Speicherfenster über Debug -> Fenster -> Speicher -> Speicher 1

Kopieren und die Adresse fügen Sie Ihre „easy-to-find“ Fehler zu erhalten Botschaft.

+0

Es gibt keine Speicheroption für Visual Studio 2015 – Denny