2012-12-18 15 views
6

Używam Xcode 4.5 na komputerach Mac z symulatorem iOS do pisania aplikacji na iPhone'a. Kiedy trafiam na punkt przerwania w debugerze, używam "Auto", aby przyjrzeć się zmiennym. Problem polega na tym, że obiekty są początkowo złożone i muszę je rozwinąć, aby zobaczyć ich wartość. W porządku, ale jest nudny i trudny do odczytania. Czy istnieje sposób na DOSTOSOWYWANIE sposobu, w jaki dane są prezentowane w debugerze?Jak poprawić wyświetlanie zmiennych będących obiektami w debuggerze xcode 4.5 (noob)

Spojrzałem na LLDB tutorial i przyjrzałem się "niestandardowym zestawieniom podsumowującym" w the post autorstwa Quinna Taylora, ale tego nie rozumiem. Musiał użyć starszej wersji xcode.

Zasadniczo mają obiekt, taki jak

klasy vec3 { publicznego: pływak X, Y, Z; };

iw oknie debugowania widzę

pos (Vec3) 

i co wolałbym zobaczyć to

pos = (Vec3) (x=45.2, y=10.7, z=2.0) 

bez konieczności rozszerzyć zmienną. Czy ktoś wie, jak mogę to zrobić?

Odpowiedz

2

Jeśli Vec3 jest twoją klasą (lub czymś, co możesz podklasą), zastąp jej description. To pozwala sformatować to, co pojawia się, gdy mówisz po pos w konsoli.

Aby uzyskać bardziej wyszukane, skonsultować tę stronę:

http://lldb.llvm.org/varformats.html

Można powiedzieć

type summary add --summary-string 

następuje opis strun, jak chcesz ten typ zmiennej, która będzie wyświetlana.

Jeśli naprawdę chcesz zagłębić się w nitty-ziarnistość, możesz napisać własny formater; dobra dyskusja w dwóch filmach WWDC 2012 na temat debugowania i LLDB. Ale musisz napisać skrypt w języku Python, aby to zrobić, więc podałem więcej "noobowego" rozwiązania.

+0

Tak, mogę zmodyfikować Vec3. Komunikat "description" działa poprawnie dla Objective-C, ale nie dla C++. I działa tylko w oknie konsoli. Miałem nadzieję, że będę mógł dostosować okno zegarka. W MS Studio możesz to zrobić bardzo ładnie z plikiem "autoexp.dat". –

+0

Hej! Właśnie znalazłem naprawdę wspaniałą stronę internetową (http://disanji.net/iOS_Doc/#documentation/DeveloperTools/Conceptual/XcodeDebugging/220-Viewing_Variables_and_Memory/variables_and_memory.html), która mówi, jak tworzyć niestandardowe formatery dla struktur (np. CGRect), modyfikując 'CustomDataViews.plist' ... Niestety Apple go usunął ... przynajmniej nie mogę go nigdzie znaleźć. –

+0

"Miałem nadzieję, że będę w stanie dostosować okno zegarka", tak, cóż, do tego służy skrypt Pythona. Piszesz to, dodajesz go przez swój plik ~/.lldbinit, wszystko gotowe. – matt

7

Udało mi się uzyskać to działając z xcode 4.5.2. Podsumowując, są to kroki.

  1. otwarte lub utwórz ~/.lldbinit przy użyciu edytora tekstu i dodać tę linię

    type summary add Vec3 --summary-string "x=${var.x}, y=${var.y}, z=${var.z}" 
    
  2. restart Xcode. Teraz, gdy trafisz przerwania vec3 będą wyświetlane jako,

    pos (Vec3) x=1, y=3.125, z=9.5 
    

Można zrobić wiele innych rzeczy w.lldbinit jak opisano w http://lldb.llvm.org/varformats.html

Na przykład

type summary add Vec3 --inline-children --omit-names 

zostanie automatycznie wygenerować ciąg podsumowanie i

type summary add --inline-children -x "Vec[:alnum:]*" 

zostanie automatycznie generuje podsumowania ciągi dla wszystkich typów, które zaczynają się od „Vec”.

+0

Kolejny przysmak. Możesz dwukrotnie kliknąć zmienną w oknie podglądu, a pojawi się wyskakujące okienko o nazwie "Ustawiony format podsumowania dla typu", w którym możesz tymczasowo dostosować ciąg podsumowujący tego typu. Jednak składnia wydaje się nieco różnić od "dodaj streszczenie typu ..." –