Có GUI gdb C ++ cho Linux không? [đóng cửa]


210

Tóm lại: Có ai biết GUI cho gdb mang nó ngang bằng hoặc gần với bộ tính năng bạn có trong phiên bản Visual C ++ mới hơn không?

Cụ thể: Là một người đã dành nhiều thời gian để lập trình trong Windows, một trong những trở ngại lớn hơn mà tôi tìm thấy bất cứ khi nào tôi phải viết mã C ++ trong Linux là việc gỡ lỗi bất cứ điều gì bằng cách sử dụng dòng lệnh gdb khiến tôi mất nhiều thời gian hơn Visual Studio, và nó dường như không trở nên tốt hơn khi thực hành. Một số điều chỉ dễ dàng hơn hoặc nhanh hơn để thể hiện bằng đồ họa.

Cụ thể, tôi đang tìm kiếm một GUI:

  • Xử lý tất cả các điều cơ bản như bước qua & vào mã, xem các biến và điểm dừng
  • Hiểu và có thể hiển thị nội dung của các kiểu dữ liệu C ++ phức tạp và lồng nhau
  • Không bị nhầm lẫn bởi và tốt nhất là có thể thông minh bước qua cấu trúc dữ liệu và mã khuôn mẫu trong khi hiển thị thông tin có liên quan như các loại tham số
  • Có thể xử lý các ứng dụng luồng và chuyển đổi giữa các luồng khác nhau để xem qua hoặc xem trạng thái của
  • Có thể xử lý việc đính kèm vào một quy trình đã bắt đầu hoặc đọc kết xuất lõi, ngoài việc khởi động chương trình trong gdb

Nếu một chương trình như vậy không tồn tại, thì tôi muốn nghe về những trải nghiệm mà mọi người đã có với các chương trình đáp ứng ít nhất một số điểm nhấn. Có ai có bất cứ đề nghị?

Chỉnh sửa:
Liệt kê các khả năng là tuyệt vời và tôi sẽ lấy những gì tôi có thể nhận được, nhưng sẽ hữu ích hơn nữa nếu bạn có thể đưa vào phản hồi của mình:
(a) Bạn có thực sự sử dụng GUI này hay không và nếu có , những phản hồi tích cực / tiêu cực bạn có về nó.
(b) Nếu bạn biết, những tính năng được đề cập ở trên là / không được hỗ trợ

Danh sách rất dễ xuất hiện, các trang web như thế này rất tuyệt vì bạn có thể biết được trải nghiệm cá nhân của mọi người với các ứng dụng.


21
+1 cho "Các trang web như thế này rất tuyệt vì bạn có thể biết được trải nghiệm cá nhân của mọi người." Ngày nay có quá nhiều người chỉ cần thực hiện một danh sách kết xuất mà IMHO hoàn toàn bỏ lỡ quan điểm.
kizzx2



Xem danh sách các giao diện gdb này tại đây: sourceware.org/gdb/wiki/GDB%20Front%20Ends và đưa ra cái đầu tiên trong danh sách. Trông rất hứa hẹn và hiện đại và đa nền tảng vì nó dựa trên trình duyệt: gdbgui.com .
Gabriel Staples

Câu trả lời:


55

Bạn sẽ không tìm thấy bất cứ thứ gì che lấp GDB có thể cạnh tranh với sức mạnh thô của trình gỡ lỗi Visual Studio. Nó quá mạnh và được tích hợp quá tốt trong IDE.

Đối với một thay thế Linux, hãy thử DDD nếu phần mềm miễn phí là thứ của bạn.


2
WinDBG vượt trội hơn nhiều so với những gì Visual Studio cung cấp. Trình gỡ lỗi phòng thu trực quan nằm trên cùng một kiến ​​trúc so với WinDBG. Như đã nói, GDB không có gì để hỏi khi so sánh nó với Windbg. Một trình gỡ lỗi đồ họa tốt hơn DDD sẽ là tuyệt vời. CDT Eclipse là một lựa chọn tốt. Tôi nghĩ rằng đã có giao diện người dùng KDE
bigmonachus

114
Ôi nhìn kìa. Một câu trả lời đưa ra yêu cầu mà không cần sao lưu nó. Tôi cũng thấy lạ là câu trả lời không trả lời được câu hỏi đã được chấp nhận.
thay thế

3
cho bất cứ ai đến đây để tìm kiếm một câu trả lời thực sự, biết rằng ddd là rác. GUI gỡ lỗi tốt nhất cho Linux mà tôi đã tìm thấy là IDA, đây không phải là phần mềm miễn phí.
bkconrad

1
Trả lời câu hỏi tốt nhất có thể hoặc không nói gì. Đã sử dụng cả hai, Visual Studio được lấp đầy nhiều tính năng hơn, nhưng DDD đủ tốt để tôi không bỏ lỡ VS. Đáng buồn thay, DDD đang hiển thị tuổi của nó.
Alan De Smet

6
Bài đăng này cần phải được cập nhật / cải thiện. Qt Creator thật tuyệt vời, ngang tầm với Visual Studio.
vharron

85

Eclipse CDT sẽ cung cấp trải nghiệm tương đương với việc sử dụng Visual Studio. Tôi sử dụng CDT Eclipse hàng ngày để viết mã và gỡ lỗi các quy trình cục bộ và từ xa.

Nếu bạn không quen với việc sử dụng IDE dựa trên Eclipse, GUI sẽ mất một chút để làm quen. Tuy nhiên, một khi bạn hiểu được các ý tưởng GUI duy nhất cho Eclipse (ví dụ: phối cảnh), sử dụng công cụ này sẽ trở thành một trải nghiệm tuyệt vời.

Công cụ CDT cung cấp một bộ chỉ mục C / C ++ hợp lý cho phép bạn nhanh chóng tìm thấy các tham chiếu đến các phương thức trong cơ sở mã của mình. Nó cũng cung cấp một công cụ mở rộng macro đẹp và hỗ trợ tái cấu trúc hạn chế.

Liên quan đến hỗ trợ gỡ lỗi, CDT có thể thực hiện mọi thứ trong danh sách của bạn ngoại trừ việc đọc kết xuất lõi (nó có thể hỗ trợ điều này, nhưng tôi chưa bao giờ thử sử dụng tính năng này). Ngoài ra, trải nghiệm của tôi với mã gỡ lỗi sử dụng các mẫu bị hạn chế, vì vậy tôi không chắc CDT sẽ cung cấp loại kinh nghiệm nào trong vấn đề này.

Để biết thêm thông tin về gỡ lỗi bằng cách sử dụng CDT của Eclipse, bạn có thể muốn xem các hướng dẫn sau:


10
Đọc các bãi lõi được hỗ trợ. (Nó được gọi là Trình gỡ lỗi sau khi chết.)
Josh Kelley

Tôi đã có kinh nghiệm tốt hơn trong việc gỡ lỗi CDT của Eclipse so với Visual Studios. Mặc dù vậy, tôi đã không cho MSVC quá nhiều cơ hội.
thịt

3
tôi nghĩ vậy QtCreator nên được đề cập cùng với Eclipse vì nó có thể so sánh được.
vô nghĩa

78

gdb -tui hoạt động ổn nếu bạn muốn một cái gì đó GUI-ish, nhưng vẫn dựa trên ký tự.


45
Bạn cũng có thể chuyển sang chế độ TUI (giao diện người dùng văn bản) trong khi ở gdb bằng cách sử dụng lệnh '-'. Quay trở lại dấu nhắc lệnh là Ctrl-X Ctrl-A. Trong khi ở chế độ TUI, lên, xuống, trái và phải di chuyển qua nguồn. Sử dụng Ctrl-P, Ctrl-N, Ctrl-F và Ctrl-B để điều hướng trong lịch sử dòng lệnh.
Ben Combee

Điều này thật đúng với gì mà tôi đã tìm kiếm. Sức mạnh của dòng lệnh gdb với một số khung nhìn hữu ích cập nhật khi tôi di chuyển xung quanh.
Kevin Cox

7
Một .gdbinit trên steriod cung cấp cho bạn một GUI dựa trên nhân vật thực sự ấn tượng, với màu sắc: github.com/cyrus-and/gdb-dashboard
cs01

Tôi khá thích gdb-dashboard nhưng cũng phải đề cập đến voltron .
vô nghĩa

3
@Bạn cảm ơn. Đối với bất kỳ ai tò mò, đây là một liên kết: github.com/cs01/gdbgui . Nó có cấu trúc dữ liệu hiển thị tương tự DDD, kiến ​​trúc máy khách / máy chủ để dễ dàng gỡ lỗi các máy từ xa không cần chuyển tiếp X và khả năng khám phá các biến phức tạp, v.v.
cs01

47

Kiểm tra trình gỡ lỗi Nemiver C / C ++ . Nó rất dễ cài đặt trong Ubuntu (Công cụ dành cho nhà phát triển / Gỡ lỗi).

Cập nhật: Liên kết mới.


Hoàn toàn tuyệt vời , cũng được hỗ trợ với apt: 'apt-get install nemiver'. Lời ngụy biện duy nhất của tôi là việc xây dựng từ repo không thành công do 'Không tìm thấy gói gconf-2.0'.
J Evans

Giao diện khá rõ ràng và tốt để đọc, nhưng đôi khi nó bị treo trong khi sử dụng các khả năng của giao diện v0.9.6. Nó cũng chấp nhận các tham số ứng dụng gỡ lỗi, những gì tôi vẫn không thể để ddd làm.
Sức mạnh Bảo Bình

Cũng có sẵn trên Fedora 30 (ít nhất). Tôi chỉ tình cờ về câu hỏi này và nemiver.
dùng3236841

31

Qt Creator có vẻ như là thứ tốt. Một đồng nghiệp chỉ cho tôi một cách thiết lập để gỡ lỗi:

  • Tạo một dự án mới, "Nhập dự án dựa trên Makefile".
  • Trỏ nó vào thư mục dự án gốc của bạn (nó sẽ lập chỉ mục các nguồn theo nó, và nó rất nhanh một cách ấn tượng).
  • Đi đến cài đặt dự án và thêm cấu hình chạy, sau đó chỉ định tệp thực thi bạn muốn gỡ lỗi và các đối số của nó.
  • Qt Creator dường như khăng khăng xây dựng dự án của bạn trước khi gỡ lỗi. Nếu bạn không muốn điều đó hoặc không sử dụng make, chỉ cần đi đến các dự án -> build (Bảng bên trái), sau đó, trên bảng bên phải trong "Xây dựng các bước", hãy xóa tất cả các bước, bao gồm cả các bước theo mặc định khi bạn đã tạo dự án.

Điều đó có vẻ như hơi nhiều công việc để gỡ lỗi một ứng dụng tôi đã biên dịch, nhưng nó đáng giá. Trình gỡ lỗi hiển thị các luồng, ngăn xếp và các biến cục bộ theo cách tương tự như Visual Studio và thậm chí sử dụng nhiều phím tắt giống nhau. Nó dường như xử lý các mẫu tốt, ít nhất là std :: string và std :: map. Việc gắn vào các quy trình hiện tại và các bãi chứa cốt lõi dường như được hỗ trợ, mặc dù tôi chưa thử nghiệm nó.

Hãy nhớ rằng tôi đã sử dụng nó ít hơn và giờ, nhưng tôi đã rất ấn tượng cho đến nay.


29

Tôi ghê tởm ý tưởng phát triển Windows, nhưng trình gỡ lỗi VC ++ là một trong những trình duyệt tốt nhất tôi từng thấy. Tôi chưa tìm thấy giao diện người dùng gần với giao diện người dùng.

GDB thật tuyệt vời khi bạn thực sự quen với nó. Sử dụng nó trong sự tức giận đủ và bạn sẽ trở nên rất thành thạo. Tôi có thể quay cuồng xung quanh một chương trình làm tất cả những điều bạn liệt kê mà không cần nỗ lực nhiều nữa. Phải mất khoảng một tháng đau khổ vì liên kết SSH đến một máy chủ từ xa trước khi tôi thành thạo. Tôi sẽ không bao giờ quay trở lại.

DDD thực sự mạnh mẽ nhưng nó khá lỗi. Tôi thấy nó bị đóng băng khá thường xuyên khi nhận được tin nhắn từ GDB rằng nó không bị mò mẫm. Thật tốt vì nó có cửa sổ giao diện gdb để bạn có thể thấy những gì đang diễn ra và cũng có thể tương tác trực tiếp với gdb. DDD không thể được sử dụng trên một phiên X từ xa trong môi trường của tôi (một vấn đề thực sự, vì tôi đang ngồi ở một máy khách mỏng khi tôi làm Unix dev) vì một số lý do vì vậy nó phù hợp với tôi.

KDevelop theo phong cách KDE điển hình và tiếp xúc MỌI THỨ cho người dùng. Tôi cũng chưa bao giờ gặp may mắn khi gỡ lỗi các chương trình phi phát triển trong KDevelop.

Studio lập trình Gnat (GPS) thực sự là một mặt trước khá tốt cho GDB. Nó không chỉ quản lý các dự án Ada, vì vậy, đáng để thử nếu bạn cần một trình gỡ lỗi.

Bạn có thể sử dụng Eclipse, nhưng nó có trọng lượng khá nặng và rất nhiều người Unix dày dạn mà tôi đã làm việc (bao gồm cả tôi) không quan tâm nhiều đến giao diện của nó, điều này sẽ không chỉ là STFU và tránh xa bạn. Nhật thực dường như cũng chiếm rất nhiều không gian và chạy như một con chó.


2
Chỉ muốn cắm dự án của tôi, gdbgui ( github.com/cs01/gdbgui ). Đó là kiến ​​trúc máy khách / máy chủ, do đó, hoạt động tốt để gỡ lỗi các máy từ xa mà không cần phiên X. Nó cũng có một thiết bị đầu cuối để tương tác trực tiếp với w / GDB và có hình ảnh để hiển thị các cấu trúc dữ liệu, tương tự như DDD.
cs01

So sánh với ưu và nhược điểm dựa trên kinh nghiệm. Chỉ cần những gì câu hỏi này cần. ty
Heath Raftery


16

Tôi sử dụng DDD rất nhiều và nó khá mạnh mẽ khi bạn học cách sử dụng nó. Một điều tôi muốn nói là đừng sử dụng nó trên X qua mạng WAN vì dường như nó thực hiện rất nhiều cập nhật màn hình không cần thiết.

Ngoài ra, nếu bạn không được giao phối với GDB và không bận tâm đến việc kiếm một ít tiền, thì tôi sẽ thử TotalView. Nó có một chút đường cong học tập dốc (chắc chắn có thể trực quan hơn), nhưng đó là trình gỡ lỗi C ++ tốt nhất tôi từng sử dụng trên bất kỳ nền tảng nào và có thể được mở rộng để hướng nội các đối tượng của bạn theo cách tùy chỉnh (do đó cho phép bạn xem Danh sách STL là một danh sách thực tế của các đối tượng và không phải là một loạt các thành viên dữ liệu nội bộ khó hiểu, v.v.)


Tôi không thể có DDD để làm việc trên X từ xa; vừa gặp sự cố với lỗi Xlib trên máy khách mỏng của tôi :(
Adam Hawes

Totalview trông giống như một sự thay thế khả thi. Tôi không coi DDD là tốt hơn giao diện nguyền rủa gdb.
deft_code

8

Kiểm tra dự án CDT của Eclipse. Nó là một plugin cho Eclipse hướng đến sự phát triển C / C ++ và bao gồm một phối cảnh gỡ lỗi khá giàu tính năng (đằng sau hậu trường sử dụng GDB). Nó có sẵn trên nhiều nền tảng.


7

Tương tự thoải mái với frontend gdb nhật thực là frontend emacs, gắn chặt với IDE của emacs. Nếu bạn đã làm việc với emacs, bạn sẽ thích nó:

GDB Emacs Frontend



6

Tôi đã sử dụng KDbg (chỉ hoạt động theo KDE).


3
KDbg không giới hạn ở KDE.
tộc

Điều đó thật tuyệt vời . Tôi tự hỏi nó đã ở đâu trong suốt thời gian này.
edmz

5

Tôi đã thử một vài guis khác nhau cho gdb và thấy DDD là tốt hơn trong số họ. Và trong khi tôi không thể nhận xét về các dịch vụ khác, không phải là gdb cho linux, tôi đã sử dụng một số trình gỡ lỗi khác trên các nền tảng khác.

gdb thực hiện phần lớn những thứ mà bạn có trong danh sách mong muốn của mình. DDD đặt một mặt trận đẹp hơn trên chúng. Ví dụ chuyển đổi chủ đề được thực hiện đơn giản hơn. Đặt điểm dừng là đơn giản như bạn mong đợi.

Bạn cũng có được một cửa sổ cli trong trường hợp có điều gì đó tối nghĩa mà bạn muốn làm.

Một tính năng của DDD nổi bật hơn bất kỳ trình gỡ lỗi nào khác mà tôi đã sử dụng là "biểu đồ" dữ liệu. Điều này cho phép bạn hiển thị và sắp xếp các cấu trúc, đối tượng và bộ nhớ dưới dạng các hộp có thể kéo. Nhấp đúp vào một con trỏ sẽ mở ra dữ liệu được loại bỏ với các liên kết trực quan trở lại cha mẹ.


Ddd có làm việc trên các chương trình với các đối số không? Tôi không thể làm cho nó vượt qua các đối số ...
user3236841

Nếu tôi nhớ chính xác, DDD có thể cung cấp cho bạn một cửa sổ giao diện điều khiển trực tiếp đến GDB. Trong bảng điều khiển GDB, bạn có thể đặt các đối số dòng lệnh bằng cách sử dụng lệnh "set args xyz abc".
Andrew Edgecombe

5

Qt Creator-on-Linux chắc chắn ngang hàng với Visual Studio-on-Windows cho C ++ ngày nay. Tôi thậm chí sẽ nói tốt hơn về phía trình gỡ lỗi.


5

Có một IDE bị thiếu trong danh sách này và rất hiệu quả (Tôi đã sử dụng nó trong nhiều dự án C / C ++ mà không gặp vấn đề gì): Netbeans .


Bây giờ tôi cực kỳ thích cgdb mà tôi đã quen với nó, nhưng Netbeans là một bước đệm tuyệt vời từ VS.
zzxyz

3

Những gì có thể được thực hiện sẽ bị giới hạn bởi thông tin gỡ lỗi mà g ++ tạo ra, ở một mức độ lớn. Emacs cung cấp giao diện cho gdb cho phép bạn điều khiển nó thông qua các thanh công cụ / menu và hiển thị dữ liệu trong các cửa sổ riêng biệt, cũng như nhập trực tiếp các lệnh gdb. CDT của Eclipse cung cấp các công cụ tương tự. Tôi đã nghe nói về Anjuta và Code :: Blocks nhưng chưa bao giờ sử dụng chúng.


3

Là một người quen thuộc với Visual Studio, tôi đã xem xét một số IDE nguồn mở để thay thế nó và KDevelop đưa ra IMO gần nhất để trở thành thứ mà một người Visual C ++ có thể ngồi xuống và bắt đầu sử dụng. Khi bạn chạy dự án ở chế độ gỡ lỗi, nó sử dụng gdb nhưng kdevelop xử lý khá nhiều việc để bạn không phải biết đó là gdb; bạn chỉ là một bước duy nhất hoặc gán đồng hồ cho các biến.

Thật không may, nó vẫn không tốt như Visual Studio Debugger.


3

Bạn không đề cập đến việc bạn đang sử dụng Windows hay UNIX.

Trên các hệ thống UNIX, KDevelop rất tốt nhưng tôi sử dụng KDbg vì nó dễ sử dụng và cũng sẽ hoạt động với các ứng dụng không được phát triển trong KDevelop.

Nhật thực là tốt trên cả hai nền tảng.

Trên Windows, có một gói tuyệt vời gọi là Wascana Desktop Developer , đó là Eclipse CDT và MinGW, tất cả được đóng gói và cấu hình sẵn độc đáo cho sự đau đớn tối thiểu. Đó là điều tốt nhất tôi đã tìm thấy để phát triển mã GNU trên Windows.

Tôi đã sử dụng tất cả các trình gỡ lỗi này và không ai trong số chúng tốt như MS Dev Studio. Eclipse / Wascana có lẽ là gần nhất nhưng nó có những hạn chế như bạn không thể bước vào DLL và nó không làm tốt công việc kiểm tra các biến.


3

Bạn đã bao giờ xem qua trình gỡ lỗi DS-5 chưa?

Có một phiên bản trả phí bao gồm rất nhiều tính năng hữu ích, nhưng bạn cũng có thể sử dụng Phiên bản cộng đồng miễn phí (cũng khá hữu ích đặc biệt đối với các hệ thống nhúng).

Tôi có trải nghiệm tích cực với công cụ này khi gỡ lỗi các ứng dụng Android trên thiết bị thực bằng cách sử dụng nhật thực.


2

Các Code: Khối C ++ IDE có một wrapper đồ họa, với một vài trong số các tính năng bạn muốn, nhưng không giống như sức mạnh của VS.


2

VisualGDB là một plugin Visual Studio khác để phát triển và gỡ lỗi các ứng dụng trên nền tảng linux và nhúng.



1

Bạn đã thử gdb -w với cygwin gdb. Nó có khả năng có một giao diện windows hoạt động khá tốt.

Vấn đề duy nhất tôi tìm thấy là trên máy hiện tại của tôi, nó không chạy theo cách đó cho đến khi tôi cài đặt ddd. Tôi nghi ngờ rằng nó yêu cầu tcltk đã được cài đặt khi tôi cài đặt ddd.




0

Trong 15 tháng qua tôi sử dụng cái nhìn sâu sắc (đi kèm với FC6). Nó không tuyệt vời, nó được viết bằng Tcl / Tk, nhưng nó đơn giản và hữu ích. DDD có chất lượng / tiện ích tương tự, nhưng hơi khó sử dụng hơn (nhiều vấn đề và sơ đồ GUI khác nhau). Tôi cũng đã cố gắng tích hợp gdb với IDE của tôi, SlickEdit. Nó hoạt động tốt (tôi đã chơi 4 giờ với nó), nhưng tôi không thích các công tắc bối cảnh GUI. Tôi thích IDE của tôi không thay đổi trong khi tôi gỡ lỗi; trên Windows tôi sử dụng SlickEdit cho IDE và Visual Studio Debugger để gỡ lỗi. Vì vậy, từ 3: Insight, DDD và SlickEdit, Insight là lựa chọn số 1 của tôi, tôi sử dụng nó> 95% thời gian, gdb dòng lệnh và DDD chiếm 5% còn lại. Nếu tôi có cơ hội, tôi sẽ đánh giá Eclipse vào một lúc nào đó, PC làm việc của tôi dường như không có đủ RAM (chỉ 1GB) để chạy Eclipse một cách hợp lý.

Tôi cũng đã nghe rất nhiều lời khen ngợi về TotalView, bao gồm cả tay đầu tiên trong một cuộc phỏng vấn xin việc. Tôi đã nhận được một eval cho công ty của chúng tôi vào cuối năm 2008, nhưng cuối cùng chúng tôi đã không tiến hành vì gdb là đủ tốt cho nhu cầu của chúng tôi; và nó là miễn phí và có mặt khắp nơi.


0

Sử dụng www.zero-bugs.com/ Trình gỡ lỗi Zero, nó yêu cầu hỗ trợ C ++ 0x từ gcc


1
www.zero-bugs.com/ trang web ngừng hoạt động
vharron

0

Tôi đã tìm kiếm một trình gỡ lỗi để bước qua một chương trình đang chạy. Nói: Đính kèm. Chương trình được xây dựng với nhật thực, nhưng vì có thể một số vật cản đa luồng, không có nguồn nào được ưa thích. Bất cứ điều gì.

Tôi đã rất đáng tiếc với NetBeans.

  • [gỡ lỗi] từ menu -> Đính kèm Deugger ...
  • như quá trình đã chọn một để gỡ lỗi
  • như dự án [dự án mới]

Bây giờ cửa sổ biến mất và bạn không thấy gì. tách ra khỏi quá trình. Quảng trường đọc "Dừng" giúp.

  • nhập nguồn từ dự án như thư mục. "... / Dự án / src
  • Bây giờ nó xuất hiện trong dự án của bạn và bạn có thể đặt điểm dừng.
  • một lần nữa trình gỡ lỗi ttach
  • đã chọn quá trình để gỡ lỗi.
  • trình gỡ lỗi nên dừng nếu chương trình đạt đến điểm dừng tiếp theo.

Chuyển đến [cửa sổ] -> [Gỡ lỗi] -> Cửa sổ của bạn có phù hợp không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.