2012-10-19 24 views

Trả lời

23

Cài đặt target.source-map cho phép bạn xác định một loạt các sửa đổi đường dẫn a => b trong phiên gỡ lỗi. Nó không giống với lệnh gdb dir, đây là danh sách các thư mục để tìm kiếm tệp nguồn theo tên cơ sở, nhưng bạn có thể giải quyết các vấn đề tương tự với source-map. Dưới đây là ví dụ trong đó tôi chuyển tệp nguồn vào thư mục ẩn sau khi biên dịch:

% 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) 

Để biết thêm thông tin về cài đặt này, hãy nhập set list target.source-map trong lldb. fwiw bạn có thể đã phát hiện ra điều này trong lldb bằng cách thực hiện apropos path sẽ liệt kê tất cả các lệnh/cài đặt có từ đường dẫn trong tên/mô tả. Thấy rằng có một cài đặt bằng tên này, bạn sẽ làm settings list để xem danh sách cài đặt và tìm hiểu rằng nó được lưu dưới target..

+0

Jason, cảm ơn bạn đã làm rõ cách sử dụng và cung cấp ví dụ tự giải thích tốt! ("Một bức tranh trị giá một ngàn chữ" ;-) Hy vọng bạn không nhớ sử dụng ví dụ này như một gợi ý để cập nhật "GDB TO LLDB COMMAND MAP" (http://lldb.llvm.org/lldb-gdb. html)./Kính trọng, Lars. – IODEV

+0

Vâng, vấn đề duy nhất là target.source-map không thực sự giống như dir; nó tương đương với cài đặt thay thế tên đường dẫn của gdb. thay thế tên đường dẫn đã được sử dụng bởi Xcode đằng sau hậu trường nhưng người dùng thường không nhận thức được nó. Chúng ta sẽ cần thêm một lệnh tương tự lệnh dir của gdb vào lldb tại một số điểm. –

+3

Về điều duy nhất tôi bỏ lỡ từ câu trả lời này, sẽ là làm thế nào để tìm đường dẫn nguồn được sử dụng khi xây dựng nó. Nếu tôi kết nối với máy từ xa, tôi thường không biết đường dẫn nào được sử dụng, tôi hy vọng có thể yêu cầu lldb chỉ cho tôi đường dẫn muốn tìm các tệp nguồn, vì vậy tôi có thể ánh xạ chính xác nó. – lundman

Các vấn đề liên quan