2012-10-19 12 views

Odpowiedz

23

Ustawienie target.source-map umożliwia zdefiniowanie serii przemodelowań ścieżek a => b w sesji debugowania. Nie jest to identyczne z poleceniem gdb dir, które jest listą katalogów do wyszukiwania plików źródłowych według nazwy bazowej, ale można rozwiązać te same problemy z source-map. Oto przykład, gdzie przenieść plik źródłowy do ukrytego katalogu po kompilacji:

% cd /tmp 
% echo 'int main() { }' > a.c 
% clang -g a.c 
% mkdir hide 
% mv a.c hide/ 
% xcrun lldb a.out 
(lldb) settings set target.source-map /tmp /tmp/hide 
(lldb) l -f a.c 
    1 int main() { } 
(lldb) br se -n main 
Breakpoint created: 1: name = 'main', locations = 1 
(lldb) r 
Process 21674 launched: '/private/tmp/a.out' (x86_64) 
Process 21674 stopped 
* thread #1: tid = 0x1f03, 0x0000000100000f49 a.out`main + 9 at a.c:1, stop reason = breakpoint 1.1 
    #0: 0x0000000100000f49 a.out`main + 9 at a.c:1 
-> 1 int main() { } 
(lldb) 

Aby uzyskać więcej informacji na temat tego ustawienia, typ set list target.source-map w lldb. fwiw możesz to odkryć w lldb robiąc apropos path, który wyświetli listę wszystkich poleceń/ustawień, które mają słowo ścieżka w nazwie/opisie. Widząc, że było to ustawienie o tej nazwie, zrobiłbyś settings list, aby zobaczyć listę ustawień i dowiedzieć się, że jest on zapisany pod numerem target..

+0

Jason, dziękuję za wyjaśnienie użycia i dostarczenie dobrego, nie wymagającego wyjaśnienia przykładu! ("Obraz jest wart tysiąca słów" ;-) Mam nadzieję, że nie będziesz miał nic przeciwko temu przykładowi jako sugestii aktualizacji "GDB TO LLDB COMMAND MAP" (http://lldb.llvm.org/lldb-gdb. html)./Pozdrowienia, Lars. – IODEV

+0

Tak, jedynym problemem jest to, że target.source-map nie jest tym samym, co katalog; Jest to odpowiednik ustawienia zmiany nazw ścieżek gdb. substytucje pathname zostały użyte przez Xcode za kulisami, ale użytkownicy zwykle nie byli tego świadomi. Będziemy musieli dodać polecenie podobne do polecenia dd gdb do lldb w pewnym momencie. –

+3

Jedyne, czego mi brakowało w tej odpowiedzi, to jak znaleźć ścieżkę źródłową użytą podczas jej budowania. Jeśli łączę się ze zdalnym komputerem, często nie wiem, jaka ścieżka była używana, mam nadzieję, że mogę poprosić lldb, aby pokazał mi, w którą ścieżkę chce znaleźć pliki źródłowe, aby mógł poprawnie mapować źródła. – lundman

Powiązane problemy