Ich bin auf eine Ausnahme gestoßen und schaue auf Variablen im Überwachungsfenster, ich sehe einige Fragezeichen (???). Bedeutet dies, dass es auf eine ungültige Adresse zeigt?Was bedeuten Fragezeichen (???) im Watch-Fenster von Visual Studio?
Antwort
Dies bedeutet, dass der Debugger seinen Wert nicht ermitteln kann.
Zum Beispiel sehen Sie das ziemlich viel, wenn Ihr Code HWND
s beinhaltet. Wenn Sie die Windows-Header-Dateien durchsehen, wird es wie folgt über einen Makro definiert:
struct HWND__{int unused;}; typedef struct HWND__ *HWND;
So ist die Art von HWND
ist wirklich der Typ „Zeiger auf ein HWND__
“. Die HWND
Werte, die Sie von Funktionen wie CreateWindow()
erhalten, sind jedoch keine Zeiger auf irgendetwas.
Aber der Debugger wird versuchen, den Wert des unused
Mitglied in der Struktur, um herauszufinden, aber kann es nicht tun:
Sie auch diese Art von Fehler angezeigt wird, wenn die Variable beobachtet hat schlechte oder fehlende Typinformationen.
Ist dies ein C++ - Projekt?
Der Debugger verwendet normalerweise das "???" string, wenn es einen Ausdruck auswerten kann, aber keine Typinformationen für einen bestimmten Teil der Anzeige erfassen kann. Dies tritt normalerweise aufgrund fehlender oder falscher PDB-Symbole auf.
Es gibt wahrscheinlich eine Möglichkeit, dass dies auftritt, wenn der Ausdruck auf beschädigte Daten zugreift (virtuelle Tabellen oder RTTI überschreiben). Aber ich weiß nicht 100%, ob das stimmt.
In der Regel bedeutet dies, dass der Zeiger oder die Referenz auf nicht zugreifbaren Speicher zeigt und daher den darzustellenden Wert nicht erhalten kann. Wenn Sie beispielsweise einen Zeiger haben, der auf ein Foo zeigen soll, interpretiert der Debugger normalerweise die Bits, auf die der Zeiger zeigt, als Foo - ob der Zeiger gültig ist oder nicht. In einigen Fällen kann jedoch ein Zeiger auf eine Position zeigen, die nicht einmal im Prozessbereich zugeordnet ist. In diesem Fall kann der Debugger die Bits nicht abrufen.
- 1. Was bedeuten diese seltsamen Fragezeichen?
- 2. Was bedeuten Fragezeichen? im Linux-Kernel Panik Anrufspuren?
- 3. Was bedeuten Verzeichnisnamen wie D0C3BDDD4ADD4E87B2B5E803303B8D772 in Visual Studio-Symbolcache?
- 4. Was bedeuten die Farben des Visual Studio-Rands?
- 5. Was macht das? (Backslash-Fragezeichen) Escape-Sequenz bedeuten?
- 6. Was sind übersprungene Tests im Visual Studio?
- 7. Was bedeuten die Modulsymbole in Android Studio?
- 8. Was bedeuten "\\. \", "\ ?? \", \\? \ ", \\"?
- 9. Was stellen die Watch-Fenster-Symbole von Visual Studio dar?
- 10. Was bedeuten diese Zahlen im Pfad?
- 11. Was bedeuten die Zahlen im Stack-Trace?
- 12. was tun && und || bedeuten im folgenden Code
- 13. Was bedeuten `? I` und`? -i` im Regex?
- 14. Was bedeuten die Punkte im relativen Dateipfad?
- 15. Was bedeuten diese Fehler im XCode Debugger?
- 16. Bedeutungen von Visual Studio-Warnstufen?
- 17. Lua im Visual Studio 2012?
- 18. Was bedeutet -1. # IND000 im Visual Studio-Debugfenster?
- 19. Was bedeuten die farbcodierten Ergebnisse von "ls" im Mac-Terminal?
- 20. Was bedeuten die Werte im Inhaltsanbieter "content // sms /" von Android?
- 21. Was bedeuten die Wörter im Terminal von Linux?
- 22. Was bedeuten diese Formate im Docstring von twisted?
- 23. Visual Studio 2012 im Vergleich zu Visual Studio 2010 (Delta)
- 24. Was bedeuten die Stackoverflow-Zahlen in Visual Studio 2012 Update 4?
- 25. Was bedeuten Verzeichnisnamen?. und '..' bedeuten und was bedeutet faDirectory?
- 26. Was entspricht Visual Studio 2008-Objekttestbank in Visual Studio 2010?
- 27. Was ist der "col" -Wert im Visual Studio Texteditor?
- 28. Was sind die am häufigsten verwendeten Tastenkürzel im Visual Studio?
- 29. Upgrade von Visual Studio
- 30. Was bedeuten grafische Symbole und Symbole in Android Studio?
Nicht wahr. Das ??? Die Fehlerzeichenfolge steht im Zusammenhang mit Informationen zu ungültigen Informationen. Wenn es den Ausdruck nicht auswerten kann, wird es eine nützlichere Fehlermeldung liefern – JaredPar
@JaredPar: Meine Formulierung ist ein bisschen aus. Was ich meinte war, dass der Debugger seinen Wert nicht herausfinden kann. –
Gotcha. Die editierte Version räumte die Verwirrung auf. Aber es zeigt das ??? für schlechte Typen und schlechte Werte. – JaredPar