2010-10-28 36 views
7

Tôi khá mới với Eclipse. Đang cố gắng thiết lập để thực hiện gỡ lỗi từ xa.Làm thế nào để thiết lập Eclipse để gỡ lỗi C từ xa bằng gdbserver?

Đây là tình huống, tôi đang kết nối với máy tính từ xa chạy Linux, tôi đang chạy Windows.

1) Tôi đã cài đặt tất cả công cụ cần thiết cho Eclipse và có thể kết nối với máy Linux.

2) máy từ xa có gdbserver

linux1[1]% gdbserver 
Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...] 
     gdbserver [OPTIONS] --attach COMM PID 
     gdbserver [OPTIONS] --multi COMM 

COMM may either be a tty device (for serial debugging), or 
HOST:PORT to listen for a TCP connection. 

Options: 
    --debug    Enable debugging output. 

Tôi có cần phải cấu hình bất cứ điều gì trong gdbserver ???

3) Tôi nên định cấu hình gì khác trong Eclipse? để gỡ lỗi từ xa?

4) Phiên bản GDB của tôi có khác với GDB máy từ xa không?

+0

Không ai ???????? – newprint

+0

Bản sao có thể có của [Ứng dụng gỡ lỗi từ xa C++ với Eclipse CDT/RSE/RDT] (https://stackoverflow.com/questions/15685104/remote-debugging-c-applications-with-eclipse-cdt-rse-rdt) –

Trả lời

5

gdbserver cần thêm đối số. Ví dụ: giả sử gdbserver localhost:1337 yourprogram yourprogramarguments và tiếp tục chạy.

Sau đó, trong Eclipse, hãy tạo cấu hình gỡ lỗi mới cho "Ứng dụng C/C++". Trên tab chính, ở dưới cùng, chọn GDB (GSF) Remote System Process Launcher làm trình khởi chạy. Trên tab trình gỡ lỗi, chọn gdbserver Debugger làm trình gỡ lỗi. Trong kết nối, hãy nhập TCP làm loại kết nối và cung cấp localhost:1337 làm địa chỉ. Khi bạn khởi động cấu hình, bạn có thể điều khiển từ xa gdb bằng cách nhập lệnh vào bảng điều khiển.

2

kiểm tra sự tỉnh táo CLI

Trước khi bạn làm bất cứ điều gì, chắc chắn bạn:

Câu trả lời này giả định rằng bạn có thể làm trên bảng phát triển:

sudo apt-get install gdbserver 
gdbserver :1234 path/to/executable 

Và trên máy chủ:

aarch64-linux-gnu-gdb \ 
    -ex "target remote board-hostname:1234" \ 
    -ex "file path/to/cross/compiled/executable" \ 
    -ex 'tb main' \ 
    -ex c 

và sau đó bước gỡ lỗi tất cả mọi thứ một cách chính xác.

Eclipse thiết lập

Tested trong Ubuntu 16,04 máy chủ, Eclipse Oxygen 4.7.0 (tải về từ trang web), gdbserver 7.12, aarch64-linux-gnu-gdb 7.6.

Tôi đã sử dụng thành công tất cả các phương pháp sau:

  • thủ
  • tự động
    • mật khẩu auth
    • khóa công khai auth

Manual

Với phương pháp này, chúng tôi phải khởi chạy gdbserver trên mục tiêu trước khi chạy gỡ lỗi trên Eclipse.

Pro: phân phối cấu hình kết nối SSH thông qua Eclipse để cho phép Eclipse chạy gdbserver, đây là một điểm có thể xảy ra khác.

Con: bạn phải khởi chạy lại gdbserver mỗi lần gỡ lỗi bắt đầu. Điều này có thể được khắc phục nếu Eclipse hiểu được gdbserver --multi, nhưng tôi không nghĩ rằng nó có tác dụng?

Do tính đơn giản của nó, tôi khuyên bạn nên sử dụng phương pháp này trước tiên.

Mở cấu hình gỡ lỗi, sau đó tạo "Ứng dụng từ xa C/C++" mới.

Dưới tab "Main":

  • chọn "Tên", "Dự án" và "C/C++ ứng dụng" như bình thường cho một debug địa phương

  • tại launcher đáy, nhấp vào "Chọn cài đặt khác", chọn "Sử dụng cài đặt cấu hình cụ thể" và chọn "Trình gỡ lỗi gỡ lỗi từ xa GDB (DSF)"

    Tại sao chúng tôi thực hiện việc này: đầu tiên tự động kết nối với bảng SSH và khởi chạy gdbserver cho bạn .

    enter image description here

Dưới tab "Debugger":

  • "GDB debugger": tương tự như sử dụng từ CLI trên máy chủ, aarch64-linux-gnu-gdb ví dụ này

  • Tiểu tab "Kết nối": đặt tên máy chủ và cổng được chuyển đến máy chủ lưu trữ trên CLI (board-hostname1234)

    enter image description here

    enter image description here

Cuối cùng, tay khởi động gdbserver trên mục tiêu cũng giống như chúng tôi đã làm từ CLI:

gdbserver :1234 path/to/executable 

và bắt đầu gỡ rối từ Eclipse bình thường.

Bạn phải khởi động lại gdbserver mỗi khi bạn chấm dứt chương trình.

tự động với mật khẩu auth

Đây là phương pháp tốt nhất cho bo mạch phát triển, mà đã cố định mật khẩu công chúng biết đến.

Kết nối với mục tiêu bằng SSH và mật khẩu, đồng thời tự động khởi động gdbserver trên mục tiêu, rất thuận tiện!

Mục tiêu gdbserver stdout chuyển đến cửa sổ "Console" của Eclipse, làm giảm thêm chuyển đổi cửa sổ.

Trong Eclipse thiết lập:

tự động với công chúng chính

Rất giống với xác thực mật khẩu, ngoại trừ việc bạn phải đi đến: "Kết nối", "New", và chọn "Công khai xác thực dựa chìa khóa"

Ưu điểm:

  • vượt qua "an toàn lưu trữ đã không thể lưu các mật khẩu chủ" nếu bạn có một khóa bí mật được mã hóa (không an toàn, nhưng tốt cho devboards)
  • cho các máy chủ, bạn có thể có đã thiết lập công quan trọng

Nhược điểm:

  • thiết lập quan trọng có thể làm tổn thương lần đầu tiên
  • phải làm lại thiết lập quan trọng bất cứ khi nào devboard được nấu

nên Tôi thích phương pháp này cho các máy chủ.

SSH có thể kết nối mà không cần mật khẩu nếu bạn:

Trước khi sử dụng phương pháp này, hãy đảm bảo ủy quyền của bạn Các phím d hoạt động từ dòng lệnh, tức là giờ đây bạn có thể thực hiện:

ssh [email protected] 

mà không cần nhập bất kỳ mật khẩu nào.

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