1. 程式人生 > >Qt 5.11.0使用gdb遠端部署和除錯

Qt 5.11.0使用gdb遠端部署和除錯

操作環境

PC: OS Debian9.4.0, Qt 5.11.0, IP: 192.168.1.10
BeagleBone Black: Debian 9.3.0, IP: 192.168.1.20

前言

在嵌入式開發中,如何使用QT去除錯程式是很重要的。除錯無非分為以下幾種方式:

  1. 最初級的方式就是編譯目標程式,然後拷貝到開發板,通過printf函式輸出一些除錯資訊來除錯程式。
  2. 移植GDB,編譯完目標程式後,在開發板執行GDB server,然後使用QT遠端除錯。
  3. 使用QT一鍵遠端除錯程式,需要將目標程式拷貝到開發板。

方式1不僅麻煩還很難找出問題。方式2雖然可以除錯,但很麻煩,每次編譯完程式後都得拷貝到開發板。第3種方式靈活簡單。

步驟

1.安裝gdb

  • PC安裝GNU多架構偵錯程式:
apt-get install gdb-multiarch

[email protected]:~$ gdb --version
GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
...
  • BBB安裝gdbserver
apt-get install gdbserver

[email protected]:~/demo$ gdbserver --version
GNU gdbserver (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016
Free Software Foundation, Inc. gdbserver is free software, covered by the GNU General Public License. This gdbserver was configured as "arm-linux-gnueabihf"

2.配置Qt Kit

可以參考此視訊教程1 視訊教程2

  1. 根據交叉編譯的qmake新增Qt Version。參考此部落格
    Kit
  2. 編譯器
    編譯器
  3. 除錯工具
    Debugger
  4. 配置Kit
    Kit
  5. 配置Device
    Qt Creator可以通過Device中設定的SSH將可執行檔案上傳到BBB上。
    點選右側的Test選單可以查詢設定的埠範圍內可用的埠。
    配置Device
  6. 配置sysroot(不清楚作用)

3.測試

  • PC IP: 192.168.1.10
  • BBB IP: 192.168.1.20

3.1配置Qt Projects

其中工程檔案中需要新增以下內容:

    target.files = armtest1   # your local executable file.
    target.path = /home/devin/gdb   # executable file's path on your device(beaglebone). there is no slash in the end of the path.
INSTALLS += target

.pro檔案

3.2 部署可執行檔案

  • Deploy或者Run之後BBB的 /home/devin/gdb 目錄中會多出一個可執行檔案armtest1 (需要提前配置好Kit中的Device)。

上傳檔案時可能會出現下列錯誤:

error: Upload of file “/home/devin/qtdemo/build-armtest2-Beaglebone_Kit-Debug/armtest1” failed. The server said: “Permission denied”.


可能原因是Device選項卡中設定的SSH登入使用者沒有許可權訪問armtest1.pro檔案中設定的target.path路徑,導致無法上傳檔案。

  • 或者使用sftp將可執行檔案armtest1手動傳輸到BBB上

3.3 一鍵除錯

  • ssh登入BBB後使用xhost命令允許別的使用者(Device中設定的root使用者)啟動的圖形程式將圖形顯示在當前螢幕上(BBB預設登入使用者為debian)。可以修改預設登入使用者。
debian@beaglebone:~$ echo $DISPLAY

debian@beaglebone:~$ xhost
xhost:  unable to open display ""
debian@beaglebone:~$ export DISPLAY=:0.0
debian@beaglebone:~$ xhost
access control enabled, only authorized clients can connect
SI:localuser:debian
debian@beaglebone:~$ xhost +
access control disabled, clients can connect from any host
  • 使用 F5 / F10除錯,注意在3.1中設定DISPLAY環境變數。

3.4 BBB上開啟gdbserver手動除錯

  • 埠號和下圖中設定的埠號保持一致,此處port=12345
    命令格式: gdbserver <主機IP>:<埠> <可執行程式>
[email protected]:~/demo$ gdbserver :12345 armtest1
Process armtest1 created; pid = 19835
Listening on port 12345
//下面為連線上之後的提示
Remote debugging from host 192.168.1.10
...
  • 配置 Debug/Start Debugging/Attach to running debug server,點選OK
  • 記得先新增斷點(Break at “main”表示在main函式斷點)
  • F10單步除錯,F5全速執行
    Debug]

參考資料

相關推薦

Qt 5.11.0使用gdb遠端部署除錯

操作環境 PC: OS Debian9.4.0, Qt 5.11.0, IP: 192.168.1.10 BeagleBone Black: Debian 9.3.0, IP:

idea(8) 遠端部署遠端除錯

https://stackoverflow.com/questions/29842516/error-running-intellij-debugger-unable-to-open-debugger-port-java-net-connect http://blog.csdn.ne

qt glut qt opengl (qt 5.11.1) 超詳細的qt opengl環境搭建

作者: 飛劍神 網址:www.feijianshen.com 郵箱: [email protected] 本人:百度雲:wrzfeijianshen 本部落格共開下載部落格和其中用到的工具連結地址: 課件在這裡哦: https://github.com/wrzfe

OPenCV筆記(3.4.1環境配置與擴充套件包編譯 vs 2017 Qt 5.11

1.官網 https://opencv.org/2.下載標準包 https://opencv.org/releases.html下載winpack之後解壓,配置環境變數,此方法只能使用標準的釋出庫,一些特別的庫無法使用,比如人臉識別的庫3.如果需要人臉識別等特殊的庫3.41版

Ubuntu16.04安裝qt-5.11.1

參考、推薦和致謝:https://blog.csdn.net/future_ai/article/details/81698629。 更詳細內容:https://qtguide.ustclug.org/ch01-02.htm 系統:ubuntu16.04 QT :qt-5.11.1

C++:Qt 5.11的安裝

一、Qt的獲取及其學習教程 Qt安裝包的下載地址:http://download.qt.io/archive/qt/ Qt的官方學習教程:http://doc.qt.io/ 二、在Windows 7系統中安裝Qt 5.11.2 Qt的版本會更新得比較快,其更新的一般形式通常為

解決Ubuntu16.04 Qt 5.11.1 Creator (enterprise) 無法輸入中文的問題

1.安裝fcitx-frontend-qt5 $ sudo apt-get install fcitx-frontend-qt5 2.找到 libfcitxplatforminputcontextplugin.so $ cd /usr/lib/x8

QT 5.11.2靜態編譯configure.bat

configure.bat -static -release -confirm-license -opensource -opengl desktop -platform win32-g++ -prefix "D:\Qt\Qt5.11.2\5.11.2\m

Ubuntu 16.04 安裝 Qt 5.11

1. 下載安裝包 可以去下載連結找到合適版本的Qt安裝包進行下載,我這次使用的版本是5.11.2,下載如下圖所示的連結。 下載完成以後進入到下載目錄,設定安裝包的許可權。 cd Download su

PyCharm進行遠端開發除錯

你是否經常要在Windows 7或MAC OS X上面開發Python或Web應用程式,但是它們最後需要在linux上面來執行呢? 我們經常會碰到開發時沒有問題但是到了正式的Linux環境下面卻出現問題。那麼怎樣保證開發環境跟執行環境的一致呢?通常有兩種方法解決。一種是使用PyCharm內建支援的Vagran

Ubuntu 16.04 + Qt 5.11 +opencv 3.4完美配置(親測,最簡單完美的方法)

目錄 4. 測試 1. 安裝Qt  在Ubuntu下安裝qt非常簡單,可以參考下面的安裝方法: 2. 安裝opencv3.4 從原始碼安裝最新版的opencv可以解決大部分的相容性問題。 2.1 下載最新原始碼 解壓zip格式的原

QT4.8.5+qt-vs-addin-1.1.11+VS2010安裝配置QT工程的新建載入

1.下載windows下的QT庫 QT4.8.5 for vs2010: 2.下載VS2010 下的QT外掛: 3.安裝QT庫:點選 qt-win-opensource-4.8.5-vs2010.exe; 一路Next~~ 選中 I acceot the

Oracle 11.2.0.4.0 Dataguard部署日常維護(6)-Active dataguard

ima file man log role 主備 span for current 1. 檢查主備庫的狀態 on primary column DATABASE_ROLE format a20 column OPEN_MODE format a15 column PR

ELK 完整部署使用 - 每天5分鐘玩轉 Docker 容器技術(90)

docker 教程 容器 上一節已經部署了容器化的 ELK,本節討論如何將日誌導入 ELK 並進行圖形化展示。幾乎所有的軟件和應用都有自己的日誌文件,容器也不例外。前面我們已經知道 Docker 會將容器日誌記錄到 /var/lib/docker/containers/<contariner

Qt 5中信號槽的新語法

既然 自己的 edi val 接下來 很多 工具包 code 所有者 QT 是一個跨平臺的 C++ GUI 應用構架,它提供了豐富的窗口部件集,具有面向對象、易於擴展、真正的組件編程等特點,更為引人註目的是目前 Linux 上最為流行的 KDE 桌面環境就是建立在 QT 庫

linux下終端115平臺出租常用命令vi命令修改文件及保存的使用方法

首開 mman bin 軟件包管理 系統啟動 左右移動 包含 地方 執行 首先11選5平臺出租 haozbbs.com Q1446595067介紹一下Ubuntu下各個目錄的一般作用: /這就是根目錄,一臺電腦有且只有一個根目錄,所有的文件都是從這裏開始的。舉個例子:當

ubuntu kylin 18.04 安裝 Qt Creator 5.11

++ 彈出 x64 Opens 成功 down creator releases ubuntu 首先,去官網(https://download.qt.io/official_releases/qt/ )下載Qt Creator的安裝包。 我下載的是5.11.1版本文件:qt

使用Jenkins實現CocosCreator的自動化構建釋出(5)-增加SSH遠端操作

前面文章講述瞭如何實現CocosCreator的自動化構建和釋出,不過使用次數多了會發現一個問題:就是如果我們在Creator的構建選項中選定了“MD5”,則每次構建都會生成新的檔名,那麼每一次上傳新版本到伺服器時,因為新檔案不會覆蓋舊檔案,就會導致釋出目錄下的檔案越來越多。所以我們還希

11 部署執行

部署和執行 執行多個Tornado例項 網頁響應不是特別的計算密集型處理 多個例項充分利用 CPU 多埠怎麼處理 使用Supervisor監控Tornado程序 安裝(注意看是否需要指定使用python2版本) (tudo) [email

如何在CentOS 7.5、Ubuntu 18.04Debian 9中安裝Golang 1.11

Golang 是谷歌開發的一種程式語言。由於它的多功能性、簡單性和可靠性,  Golang 已經成為開源社群中最受歡迎的程式語言之一。 準備: 一個虛擬機器中的 CentOS 7 ,  Ubuntu 18.04 LTS ,或者  Debian 9 擴充套件