2010-10-28 215 views
7

我對Eclipse很新。試圖設置做遠程調試。如何使用gdbserver設置Eclipse進行遠程C調試?

這裏是情況,我連接到運行Linux的遠程機器,我正在運行Windows。

1)我已經安裝了Eclipse所需的全部工具,並且能夠連接到Linux機器。

2)遠程機器有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. 

我需要在gdbserver任何配置???

3)我還需要在Eclipse中配置什麼?用於遠程調試?

4)請問我的GDB版本與遠程機器GDB不同?

+0

沒有人???????? – newprint 2010-11-02 00:10:38

+0

[使用Eclipse CDT/RSE/RDT遠程調試C++應用程序]的可能重複(https://stackoverflow.com/questions/15685104/remote-debugging-c-applications-with-eclipse-cdt-rse-rdt) – 2017-08-13 09:08:05

回答

5

gdbserver需要更多參數。例如,說gdbserver localhost:1337 yourprogram yourprogramarguments並保持它運行。

然後,在Eclipse中,爲「C/C++應用程序」創建一個新的調試配置。在主選項卡的底部,選擇GDB (GSF) Remote System Process Launcher作爲啓動器。在調試器選項卡上,選擇gdbserver Debugger作爲調試器。在連接的情況下,說作爲連接類型TCP,並給localhost:1337作爲地址。當您啓動配置時,您可以通過在控制檯中輸入命令來控制遠程gdb

2

CLI完整性檢查

之前,你做任何事情,請確保您:

這個回答假設,你可以在開發板上做:

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

,然後在主機:

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

並正確步調試的一切。

Eclipse設置

在Ubuntu 16.04測試主機時,Eclipse 4.7.0氧氣(從網站下載),gdbserver 7.12,aarch64-linux-gnu-gdb 7.6。

我已經成功地使用所有的下列方法:

  • 手動
  • 自動
    • 密碼身份驗證
    • 公鑰AUTH

使用手冊

使用此方法,我們必須在Eclipse上運行調試之前在目標上啓動gdbserver

臨:通過Eclipse配置SSH連接以允許Eclipse運行gdbserver,這是另一個可能的故障點。您需要在每次調試開始時重新啓動gdbserver。如果Eclipse理解gdbserver --multi,這可以被克服,但我不認爲它確實如此?

由於其簡單性,我建議您先使用此方法。

打開調試配置,然後創建一個新的「C/C++遠程應用程序」。

在標籤 「主」:

  • 在底部發射器中選擇 「名稱」, 「項目」 和 「C/C++應用程序」 如常用於本地調試

  • ,點擊「選擇其他」,選中「使用配置特定設置」並選擇「GDB(DSF)手動遠程調試啓動器」

    爲什麼我們這樣做:自動啓動程序首先使用SSH連接到主板併爲您啓動gdbserver

    enter image description here

在標籤 「調試器」:

  • 「GDB調試器」:與從CLI主機,aarch64-linux-gnu-gdb用於該實施例

  • 撒哈拉選項卡「連接」:將主機名和端口設置爲在CLI上傳遞給主機(board-hostname1234

    enter image description here

    enter image description here

最後,就像我們從CLI做的目標手動啓動gdbserver

gdbserver :1234 path/to/executable 

和正常啓動Eclipse中的調試器。

您必須在每次終止程序時重新啓動gdbserver

自動與密碼身份驗證

這是開發板,它有固定的公知密碼的最佳方法。

它通過SSH和密碼連接到目標,每次自動在目標上啓動gdbserver,非常方便!

目標gdbserver stdout轉到Eclipse的「控制檯」窗口,這進一步減少了窗口切換。

在Eclipse中設置:

自動用公鑰

非常相似的密碼認證,但你必須去:「連接」,「新建」,然後選擇「基於公共密鑰認證」

優點:

  • 克服了「安全存儲無法保存主密碼」,如果你有一個未加密的私鑰(不安全的,但罰款devboards)
  • 用於服務器,你可能已經安裝了公共密鑰

缺點:

  • 鍵設置可能會傷害第一次
  • 每當devboard被核爆

所以必須重做鍵設置我更喜歡這種服務器的方法。

SSH可以連接不使用密碼,如果您:

在使用此方法之前,請確保您的授權d鍵從命令行工作,即您現在應該可以這樣做:

ssh [email protected] 

不輸入任何密碼。