2012-03-14 32 views
39

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

+0

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. –

+1

Đ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. –

Trả lời

39

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.

+8

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 :) –

+0

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ự. –

+0

Xin chào. Đã một năm rồi. LLDB vẫn không tuyệt vời? – Voldemort

9

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.

Execution command difference between GDB and LLDB Break-Point command difference between GDB and LLDB Examining variable command difference between GDB and LLDB Examining thread state command difference between GDB and LLDB

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.

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