簡體   English   中英

如何為ARM交叉編譯並在NetBeans的另一台計算機上調試?

[英]How do I cross-compile for ARM and debug on another machine in NetBeans?

我試圖建立一個NetBeans x86_64環境,可以在其中編寫代碼並在IDE中添加斷點,為ARM進行交叉編譯,然后在運行gdbserver的raspberry pi上運行二進制文件。

一個常見的選擇是使用遠程構建主機來構建,運行和調試二進制文件,但是我最終將在沒有足夠開發工具鏈空間的嵌入式設備上工作。 我現在正在使用pi來學習一旦嵌入式計算機到貨后如何進行編譯和調試。 請不要建議使用遠程構建主機。

現在,我最好的猜測是用./run.sh "${OUTPUT_PATH}"替換run命令,其中run.sh是一個小型bash腳本,它將新編譯的二進制文件傳輸到pi,然后運行gdbserver --debug localhost:6000 ~/app 在NetBeans傳輸二進制文件並運行gdbserver之后,有一個我可以連接到NetBeans的gdbserver插件 ,但是給我的只是gdb的標准輸出(這很有意義)。 我想要的是使用IDE設置並逐步執行斷點,並觀察變量的變化,但是我似乎無法使用此設置來使它起作用。

什么是正確的方法?

gdbserver-調試localhost:6000〜/ app

這與我所熟悉的gdbserver版本記錄的調用語法不匹配,但是即使不知道其形式,該參數似乎還是錯誤的。

“本地主機”始終是指同一台計算機,而不是另一台計算機。 因此,指定“ localhost”將意味着您將在同一台計算機上運行gdbservergdb ,這使使用gdbserver的整個過程變得gdbserver

目前尚不清楚您的命令會導致gdbserver做什么,但是兩種可能性都不是。

  • 如果它導致gdbserver 偵聽回送接口而不是INADDR_ANY,則只有在目標本身上運行的程序才可以聯系gdbserver進程,從而排除了遠程gdb。

  • 如果它導致gdbserver嘗試連接到已經運行的遠程gdb ,那么它也不起作用,因為它將嘗試連接到不存在的本地 gdb

您可能想做的是

target> gdbserver :6000 ~/app

devmachine>gdb build/app
gdb> target remote target_machine_ip:6000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM