2013-08-14 17 views
6

Używam lldb z wiersza poleceń do debugowania prostego programu w języku C.Ukończenie zakładki LLDB dla nazw symboli

Na mojej maszynie w pracy mogłem użyć uzupełniania tabulatorów dla nazw symboli. Na przykład, jeśli wpiszesz "b ma", a następnie Tab, zostanie ona uzupełniona na karcie "b main". To samo dotyczy innych funkcji.

Jednak nie mogę uruchomić tej funkcji na moim laptopie, gdzie po kursorze wstawi się rzeczywistą kartę (wartość ASCII 9). Obie maszyny działają w wersji 10.8.4 i mają najnowszy kod Xcode.

Wszelkie pomysły?

Odpowiedz

4

Myślę, że używasz gdb na jednym z dwóch systemów.

lldb może wykonać uzupełnianie tabulatora - może wykonać bardziej zaawansowaną obsługę tabulacji niż gdb - ale musisz użyć kanonicznej formy komend lldb, aby działało. Komenda b, której używasz, jest aliasem (aliasem wyrażenia regularnego - listą wyrażeń regularnych, które próbują parsować komendę punktu przerwania i robią właściwe rzeczy), która nie daje silnikowi zakończenia Lldb wystarczającej ilości informacji o kontekście do wykonania byle co.

Zamiast tego, jeśli było zrobić

(lldb) br s -n ma<TAB> 

to uzupełni. Jest to oczywiście krótka forma breakpoint set --name.

Dowcip lldb przychodzi do realizacji, gdy zdajesz sobie sprawę, że może lldb zakładka kompletne wiele różnych argumentów - breakpoint set --file plików Tab zakończy „plik” jako nazwy pliku. breakpoint set --selector spowoduje autouzupełnianie nazw selektorów. breakpoint set --shlib (który ogranicza punkt przerwania do ustawienia tylko w konkretnym dylib/framework/binary) automatycznie uzupełni listę o dybil/frameworks/binaries.

W pewnym momencie w przyszłości chcemy zakończyć tworzenie tabu przy użyciu poleceń aliasu, takich jak b, ale nikt nie zdążył jeszcze rozwiązać tego problemu.

+0

Mam [podobne pytanie] (http://stackoverflow.com/questions/37612340/when-can-lldb-autocomplete-expression) na temat autouzupełniania, czy możesz rzucić okiem? Wygląda na to, że wiesz coś o lldb. Dzięki. – Karl