In den meisten Fällen beim Debuggen, wenn ich einen Vektor (in Xcode 9) habe, wird mir eine Liste von Indizes angezeigt, die die Werte im Vektor darstellen.LLDB zeigt manchmal Vektordaten und andere Zeiten nicht
Andere Zeiten, bekomme ich diese nicht hilfreich Darstellung:
Ich bin nicht in der Lage, um herauszufinden, welche Bedingungen LLDB verursachen Vektoren in die angezeigt werden unerwünschter Weg.
Frage
Was verursacht das unerwünschte Verhalten? Kann es behoben werden, ohne den Code neu zu schreiben? Ist das ein Fehler in LLDB?
Hier ist ein kurzes Codebeispiel, das unerwünschte Verhalten reproduziert:
#include <iostream>
#include <vector>
std::vector<int> createVector()
{
std::vector<int> v = { 1, 2, 3 };
return v;
}
int main(int argc, const char * argv[])
{
const auto& v = createVector();
std::cout << v.front() << std::endl;
return 0;
}
Hier ist ein Link auf das Xcode-Projekt:
http://s000.tinyupload.com/?file_id=21020556485232357417
Der einzige offensichtliche Unterschied zwischen den beiden ist, dass man ein vollständiger STL-Typ ist - ein Vektor von eindeutigen Zeigern auf Ints. Die zweite betrifft einen benutzerdefinierten oder Drittanbieterbibliothekstyp. Wenn XCode den Typ "Imxr :: MxrLinked [List?]" Nicht parsen kann, gibt es vielleicht den Partring des eindeutigen ptr/vectors zusammen? – jwimberley
Ich habe die Frage bearbeitet, um deutlicher zu machen, dass dies nicht das Problem ist. Lass mich wissen, ob die Bearbeitung geholfen hat. –
Mit welchen Optimierungen kompilieren Sie? – Niall