Sự khác nhau giữa GDB & LLDB debuggers là gì? Gần đây tôi đã nâng cấp phiên bản Xcode của mình từ 4.2 lên 4.3 & bắt đầu nhận cảnh báo để nâng cấp trình gỡ lỗi của tôi từ GDB lên LLDB.GDB Vs LLDB debuggers
Trả lời
LLDB là một phần của bộ công cụ LLVM mà Apple đang chuyển sang, bao gồm cả Clang. Có rất nhiều tính năng được cải thiện, bao gồm cả hiệu suất được cải thiện. Có giới thiệu nhanh về cho người dùng GDB đây: http://lldb.llvm.org/tutorial.html
Tuy nhiên ...
Bạn có thể muốn có một chuyến đi qua các diễn đàn tại developer.apple.com. Có một chút xôn xao về vấn đề với LLDB vào lúc này (trong XCode 4.3.1). Một vấn đề khó chịu, mà mọi người từ Apple đã xác nhận, là xem ivars trong khi bước có thể cho bạn thấy những giá trị sai.
Lỗi đó là lý do tại sao bạn sẽ tìm thấy tôi bằng GDB trong thời gian này :) –
Cảm ơn bạn đã đề cập đến vấn đề này! Tôi đã nhận được điên về những gì trình gỡ lỗi LLDB cho tôi thấy. Nó khá là không thể. GDB hoạt động tốt hơn, thực sự. –
Xin chào. Đã một năm rồi. LLDB vẫn không tuyệt vời? – Voldemort
1. Bằng Chênh lệch Definition
Thứ nhất, GDB là gì?
"GDB là debugger tiêu chuẩn cho các hệ thống phần mềm GNU"
Các GNU Debugger, thường được gọi là chỉ GDB và đặt tên gdb như một tập tin thực thi, là debugger tiêu chuẩn cho hệ điều hành GNU. Tuy nhiên, việc sử dụng nó không bị hạn chế nghiêm ngặt đối với hệ điều hành GNU; nó là một trình gỡ lỗi di động chạy trên nhiều hệ thống giống Unix và hoạt động cho nhiều ngôn ngữ lập trình, bao gồm Ada, C, C++, Mục tiêu-C, Miễn phí Pascal, Fortran, Java 1 và một phần khác. 2
(trích dẫn từ wikipedia)
Thứ hai, LLĐB là gì?
"LLĐB là một trình gỡ lỗi xây dựng như một tập hợp các thành phần tái sử dụng mà cao đòn bẩy hiện các thư viện trong dự án LLVM lớn hơn, chẳng hạn như phân tích cú pháp biểu hiện Clang và LLVM disassembler.
LLĐB là của Apple‘từ mặt đất lên’thay thế cho GDB, được phát triển trong sự phối hợp chặt chẽ với các trình biên dịch LLVM để mang đến cho bạn khả năng gỡ lỗi tối tân với khả năng kiểm soát dòng chảy và kiểm tra luồng dữ liệu. Việc cài đặt LLDB tiêu chuẩn cung cấp cho bạn một bộ các lệnh được thiết kế để tương thích với các lệnh GDB quen thuộc, ngoài việc sử dụng cấu hình tiêu chuẩn, bạn có thể dễ dàng tùy chỉnh LLDB cho phù hợp với nhu cầu của mình.
(trích dẫn từ trang web chính thức của Apple)
/* Tôi đã cố gắng tìm dữ liệu thực tế/thực tế để chứng minh tuyên bố: LLDB đã nhanh hơn nhiều so với GDB khi gỡ lỗi các chương trình lớn.) Tuy nhiên, tôi không thể tìm thấy nó. nếu có ai đó có dữ liệu liên quan này, vui lòng chỉnh sửa bài viết này. */
Cả GDB và LLDB đều là trình gỡ rối tuyệt vời của khóa học mà không nghi ngờ gì.
GDB là phần trình gỡ lỗi của dự án GNU được tạo để hoạt động cùng với trình biên dịch GNU.
LLDB là phần trình gỡ lỗi của dự án LLVM được tạo để hoạt động cùng với trình biên dịch LLVM.
2.Bằng sự khác biệt của trình gỡ lỗi Lệnh sử dụng
Phần lớn các lệnh đều giống nhau.
Tuy nhiên, lldb và gdb, hai trình gỡ lỗi khác nhau được phát triển bởi các nhóm phát triển khác nhau và do đó có một số lệnh khác nhau.
Đây là liên kết tốt dưới đây để so sánh sự khác biệt của hai lệnh trình gỡ rối này.
cho tôi liên kết các chi tiết dưới đây: https://developer.apple.com/library/content/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-command-examples.html
http://lldb.llvm.org/lldb-gdb.html
Điều này cho thấy rõ ràng và tổ chức các sự khác biệt của các lệnh.
Trong trường hợp trang web không thể truy cập được nữa, tôi tóm tắt sự khác biệt chính của các lệnh bên dưới từ trang được liên kết.
3. Bằng cách Ý kiến cá nhân
LLĐB đã được tích hợp đầy đủ từ Xcode IDE 5 theo mặc định như debugger chính.
Từ thời điểm đó, đã có một số báo cáo khiếu nại về sự ổn định của LLDB, các vấn đề về hiệu suất và lỗi.
Tuy nhiên, LLVM với dự án LLDB đã được cải tiến và nâng cấp vô cùng to lớn cho đến nay là một trong những dự án nguồn mở cốt lõi trên thế giới. Vì vậy, tôi nghĩ, ít nhất, LLDB nên được sử dụng cho môi trường phát triển của Apple kể từ khi LLDB lấy trộm vị trí của GDB và đã là trình gỡ rối mặc định chính ít nhất trong thế giới của Apple.
(Vào cuối tháng 9 năm 2016, Xcode 8 tích hợp LLVM và LLDB đã chính thức được phát hành, có nghĩa là khá nhiều thời gian đã trôi qua kể từ khi LLVM/LLDB là chuỗi công cụ mặc định cho Xcode.)
Nhưng, Chúng ta đều biết GDB đã được xác minh lịch sử và mạnh mẽ và trình gỡ lỗi đã được chứng minh trong hơn 30 năm qua, điều này thật tuyệt vời.
Vì vậy, tôi sẽ nói ...
Tôi muốn sử dụng LLĐB trong khi sử dụng kêu vang, sử dụng gdb trong khi sử dụng trình biên dịch gcc là sự kết hợp tốt hay cặp vì LLĐB được dựa trên llvm, trong khi gdb là một debugger GNU.
Tôi ước điều đó có thể hữu ích cho bạn.
Cảm ơn.
- 1. Sự khác nhau giữa LLĐB và GDB Debuggers
- 2. Viết debuggers
- 3. Ưu điểm của LLDB đối với GDB trong phát triển iOS là gì?
- 4. NSLog không có đầu ra trong LLDB. Hoạt động trong GDB
- 5. LLDB tương đương với lệnh "thông tin malloc-history <address>" của GDB?
- 6. LLDB tương đương với lệnh gdb "directory" để chỉ định đường dẫn tìm kiếm nguồn?
- 7. Điểm quan sát của Xcode LLDB
- 8. Đặt hương vị tháo gỡ cho Intel trong LLDB
- 9. Tôi có thể tắt cảnh báo "Trình gỡ lỗi nâng cấp từ GDB thành LLDB" trong XCode 4.3.2 không?
- 10. LLDB Break tại địa chỉ
- 11. Thông báo lỗi lạ trong Xcode 4.3 với LLDB
- 12. Kịch bản Python LLDB trong Xcode
- 13. LLDB có biến thuận tiện ($ var) không?
- 14. Hướng dẫn sử dụng/tài liệu LLDB
- 15. Tắt tín hiệu khi khởi tạo LLDB
- 16. lỗi lldb: không tìm thấy thuộc tính trên đối tượng thuộc loại
- 17. Breakpoint về ngoại lệ (tương đương với catch catch của gdb)
- 18. GCC -g vs -g3 GDB Cờ: Sự khác biệt là gì?
- 19. gdb: thoát khỏi chương trình mà không thoát khỏi gdb
- 20. LLDB bí danh cho nhiều lệnh dưới dạng
- 21. Thêm gdb vào MinGW
- 22. gdb không nhấn breakpoint
- 23. gdb - thread log
- 24. chờ gdb đính kèm
- 25. GDB cheat sheet
- 26. Làm cách nào để tự tạo một kết xuất lõi (hoặc tương đương) trong lldb được đính kèm với iOS
- 27. Xcode 4 treo trên gắn với (tên ứng dụng) khi trình gỡ lỗi được đặt thành LLDB
- 28. Biến không sử dụng GDB
- 29. gdb debugger nhiều tệp nguồn
- 30. Điểm ngắt gdb trên pthread_create
Một khác biệt lớn đó là giữ tôi lại từ việc thay đổi là GDB là rất thông minh tại in mảng lớn với rất nhiều nội dung lặp đi lặp lại, trong khi LLĐB chỉ thổi ra thanh cuộn dọc. –
Điều tôi thích về LLDB là cú pháp của nó được cấu trúc nhiều hơn. GDB được hình thành tự do hơn một chút. –