91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

linux環(huán)境下在線調(diào)試環(huán)境的搭建方案解析

電子設(shè)計(jì) ? 來(lái)源:面包板社區(qū) ? 作者:一口Linux ? 2021-03-02 15:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.引言

單片機(jī)一般使用Jlink通過(guò)SWD或者JTAG接口直接在IDE中在線調(diào)試,Linux應(yīng)用程序通常是加printf輸出log去調(diào)試,這種方式簡(jiǎn)單,但是有些隱藏的程序bug只通過(guò)加打印信息不那么容易定位,這時(shí)可以通過(guò)類似單片機(jī)調(diào)試的gdb調(diào)試來(lái)實(shí)現(xiàn),本篇為大家介紹linux環(huán)境下在線調(diào)試環(huán)境的搭建,希望對(duì)大家有所幫助。

GDB, the GNU Project debugger, allows you to see what is going on `inside' another program while it executes -- or what another program was doing at the moment it crashed.

它的工作原理是:在主機(jī)Ubuntu下運(yùn)行g(shù)db,在嵌入式板子上運(yùn)行g(shù)dbserver,這樣就可以在線調(diào)試了。

2.環(huán)境介紹

2.1.硬件

1) 網(wǎng)上的一個(gè)第三方做的NUC972開(kāi)發(fā)板:

有興趣購(gòu)買的朋友,可以去他們的淘寶店購(gòu)買

2.2.軟件

1) Uboot繼續(xù)使用之前文章用的,無(wú)須改動(dòng)。

2) Kernel在上一篇基礎(chǔ)上,無(wú)須改動(dòng)。

3) Rootfs在上一篇用Buildroot生成的基礎(chǔ)上,需要做一定的改動(dòng),用來(lái)生成gdbserver。

3.Buildroot配置

Buildroot里需要做一定的配置,用來(lái)生成gdb和gdbserver,步驟如下:

1) 確認(rèn)Toolchain | Build cross gdb for the host 是否選中,這個(gè)默認(rèn)是選中的。

這個(gè)的作用是:Build a cross gdb that runs on the host machine and debugs programs running on the target. It requires 'gdbserver' installed on the target。

2) 選中Toolchain下的Thread library debugging,注意一定得先選中這個(gè),不然第三步無(wú)法執(zhí)行。

3) 選中Target packages | Debugging, profiling and benchmark->gdb和gdbserver

上面的作用是:

This option allows to build gdbserver and/or the gdb debugger for the target.For embedded development, the most common solution is to build only 'gdbserver' for the target, and use a cross-gdb on the host.

4) 保存,編譯即可。

生成的gdb位于:/home/topsemic/nuc972/buildroot/NUC970_Buildroot/output/host/usr/bin

目錄中

生成的gdbserver位于:

/home/topsemic/nuc972/buildroot/NUC970_Buildroot/output/target/usr/bin 目錄中

5) 將上述gdbserver直接放到板子的/usr/bin目錄里即可,然后登錄板子輸入gdbserver,可以看到如下信息,說(shuō)明板子的gdbserver已經(jīng)搭建好了。

4.新建測(cè)試程序

1)新建一個(gè)測(cè)試程序gdbtest.c

#include int main(){ char s[64] = "Welcome to www.topsemic.com"; int a = 1; int c = a*2; int *ptr = NULL; printf("s is :%s ", s); printf("c is : %d ", c); *ptr = 20; printf("%d ",*ptr); return 0;}

2)交叉編譯

topsemic@topsemic-virtual-machine:~/nuc972/examples/gdbserver$ arm-linux-gcc gdbtest.c -o gdbtest -g

注:arm-linux-gcc gdbtest.c -o gdbtest -g其中”-g”參數(shù)表示進(jìn)行 GDB 編譯。

這個(gè)程序放到板子里運(yùn)行結(jié)果如下:

我們用下面的在線調(diào)試方法去看看什么原因?qū)е碌腟egmentation fault

5.在線調(diào)試

調(diào)試前,將板子和PC之間通過(guò)網(wǎng)線相連接,步驟如下:

1) 在開(kāi)發(fā)板可執(zhí)行程序所在的目錄下,執(zhí)行如下命令啟動(dòng)gdbserver:

命令格式:gdbserver :

192.168.0.80 為Ubuntu 的 IP 地址, 1234 為連接的端口號(hào)

注:需要先將虛擬機(jī)Ubuntu的IP配置為固定的192.168.0.80,這個(gè)設(shè)置方法在《Linux學(xué)習(xí)系列八:操作網(wǎng)口》中有介紹

2) 在Ubuntu下啟動(dòng)gdb調(diào)試,命令格式:

<應(yīng)用程序路徑>

topsemic@topsemic-virtual-machine:~/nuc972/examples/gdbserver$ /home/topsemic/nuc972/buildroot/NUC970_Buildroot/output/host/usr/bin/arm-linux-gdb gdbtest

3) 在彈出的上述對(duì)話框(gdb)后輸入以下命令,連接開(kāi)發(fā)板

(gdb)target remote 192.168.0.100:1234

其中192.168.0.100 是開(kāi)發(fā)板的IP地址

4)之后就可輸入如下 GDB 調(diào)試命令,其他調(diào)試命令的詳細(xì)用法請(qǐng)輸入”help 命令名稱”查閱。

命令:l,參看代碼。

命令:b main,在 main處設(shè)置斷點(diǎn)。

命令:b 6,在第六行設(shè)置斷點(diǎn)。

命令:c,繼續(xù)執(zhí)行。

命令:n,單步執(zhí)行。

命令:q,退出gdb。

一直輸入 c, 直到程序結(jié)束。

單步調(diào)試,同時(shí)查看板子上打印的信息

可以看到板子程序執(zhí)行的過(guò)程和Ubuntu上加的斷點(diǎn)運(yùn)行的進(jìn)度一致,另外可以

發(fā)現(xiàn)是因?yàn)閘ine 10 導(dǎo)致的Segmentation fault,這樣就定位到了出問(wèn)題的地方。

注:https://man.linuxde.net/gdb 可以看到詳細(xì)的gdb命令用法。

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6077

    文章

    45506

    瀏覽量

    670999
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11772

    瀏覽量

    219128
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    614

    瀏覽量

    33418
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AT32開(kāi)源鴻蒙開(kāi)發(fā)環(huán)境搭建

    、編譯環(huán)境準(zhǔn)備及常見(jiàn)問(wèn)題說(shuō)明。通過(guò)本指南,開(kāi)發(fā)者可以快速構(gòu)建可用的鴻蒙開(kāi)發(fā)環(huán)境,為后續(xù)的應(yīng)用開(kāi)發(fā)、系統(tǒng)移植和功能調(diào)試打下堅(jiān)實(shí)基礎(chǔ)。 本指南適用于有一定 Linux 使用經(jīng)驗(yàn)的開(kāi)發(fā)人員
    發(fā)表于 01-16 13:56

    linux-arm開(kāi)發(fā)環(huán)境的簡(jiǎn)單配置

    linux-arm開(kāi)發(fā)環(huán)境簡(jiǎn)單配置 關(guān)于linux-arm開(kāi)發(fā)環(huán)境簡(jiǎn)單配置是ARM學(xué)習(xí)的第一步,很多初學(xué)者會(huì)在這問(wèn)題上糾結(jié)很久都不能配置好開(kāi)發(fā)環(huán)境
    發(fā)表于 01-13 07:56

    從零搭建嵌入式開(kāi)發(fā)環(huán)境:C、Makefile、調(diào)試全流程

    很多人剛開(kāi)始學(xué)嵌入式的時(shí)候,第一件事就被環(huán)境卡住?!癒eil安裝不上、STM32CubeIDE卡死、make命令找不到、下載不進(jìn)芯片”——這些問(wèn)題往往比代碼更容易勸退人。實(shí)際上,搭建環(huán)境這件事看似
    的頭像 發(fā)表于 01-09 19:04 ?711次閱讀
    從零<b class='flag-5'>搭建</b>嵌入式開(kāi)發(fā)<b class='flag-5'>環(huán)境</b>:C、Makefile、<b class='flag-5'>調(diào)試</b>全流程

    經(jīng)驗(yàn)分享 | eclipse搭建先楫開(kāi)發(fā)環(huán)境

    最近有小伙伴留言,想在eclipse平臺(tái)下開(kāi)發(fā)先楫的MCU,但是苦于沒(méi)有工程模板,自己折騰了半天又遇到一堆報(bào)錯(cuò),很費(fèi)時(shí)間?;诖诵枨?,筆者基于HPM6E00EVK一步一步搭建在eclipse下的開(kāi)發(fā)環(huán)境,可以順利實(shí)現(xiàn)仿真和調(diào)試,
    的頭像 發(fā)表于 12-19 08:32 ?955次閱讀
    經(jīng)驗(yàn)分享 | eclipse<b class='flag-5'>搭建</b>先楫開(kāi)發(fā)<b class='flag-5'>環(huán)境</b>

    IDC機(jī)房環(huán)境監(jiān)測(cè)方案—全解析

    文章由山東華科信息技術(shù)有限公司提供在數(shù)字化轉(zhuǎn)型加速的今天,IDC機(jī)房作為數(shù)據(jù)存儲(chǔ)與計(jì)算的核心載體,其運(yùn)行環(huán)境穩(wěn)定性直接影響業(yè)務(wù)連續(xù)性。本文系統(tǒng)解析IDC機(jī)房環(huán)境監(jiān)測(cè)方案的設(shè)計(jì)邏輯與實(shí)施
    的頭像 發(fā)表于 12-10 09:22 ?356次閱讀
    IDC機(jī)房<b class='flag-5'>環(huán)境</b>監(jiān)測(cè)<b class='flag-5'>方案</b>—全<b class='flag-5'>解析</b>

    實(shí)驗(yàn)室環(huán)境在線監(jiān)測(cè)管理系統(tǒng)方案

    在科研活動(dòng)日益頻繁、實(shí)驗(yàn)精度要求不斷提高的當(dāng)下,實(shí)驗(yàn)室環(huán)境的穩(wěn)定性與可控性成為保障實(shí)驗(yàn)成功與數(shù)據(jù)可靠的關(guān)鍵因素。某工廠要求對(duì)多個(gè)實(shí)驗(yàn)室、倉(cāng)庫(kù)、走廊等區(qū)域的環(huán)境進(jìn)行在線監(jiān)測(cè)與管理,以確保及時(shí)發(fā)現(xiàn)
    的頭像 發(fā)表于 11-26 14:29 ?387次閱讀
    實(shí)驗(yàn)室<b class='flag-5'>環(huán)境</b><b class='flag-5'>在線</b>監(jiān)測(cè)管理系統(tǒng)<b class='flag-5'>方案</b>

    移植蜂鳥(niǎo)需要在Linux環(huán)境下嗎?

    《手把手教你設(shè)計(jì)CPU》書(shū)上運(yùn)行Verilog仿真測(cè)試那章說(shuō)為了重現(xiàn)仿真環(huán)境,最好在Linux環(huán)境下。不知道移植蜂鳥(niǎo)是否需要在Linux環(huán)境
    發(fā)表于 11-10 07:42

    在Windows和Linux環(huán)境下分別使用Olimex和蜂鳥(niǎo)調(diào)試器下載程序

    本隊(duì)伍編號(hào)CICC3042,本篇文章介紹在Windows和Linux環(huán)境下分別使用Olimex和蜂鳥(niǎo)調(diào)試器下載程序,和上一篇Hbirdv2的移植配合使用。 使用過(guò)第一版蜂鳥(niǎo)的同學(xué)們可能按照書(shū)中
    發(fā)表于 10-31 08:26

    tiny4412 Qt環(huán)境搭建

    1.硬件環(huán)境 PC端:ubuntu18.04 開(kāi)發(fā)板硬件平臺(tái):tiny4412 內(nèi)核版本:linux3.5 交叉編譯器:arm-linux-gcc Qt版本:Qt5.6 2.搭建 ub
    的頭像 發(fā)表于 10-21 09:54 ?690次閱讀
    tiny4412 Qt<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—開(kāi)發(fā)環(huán)境搭建(一)

    ;還講解了 GDB 10.2 調(diào)試工具的環(huán)境搭建、演示程序編譯,以及 list、break 等常用調(diào)試命令的使用,為開(kāi)發(fā)調(diào)試提供全面指導(dǎo),適
    的頭像 發(fā)表于 09-18 16:04 ?629次閱讀
    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—開(kāi)發(fā)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>(一)

    ESP32-S3的MicroPython開(kāi)發(fā)環(huán)境搭建

    本文通過(guò)搭建Thonny IDE開(kāi)發(fā)環(huán)境,了解了如何給ESP32-S3燒錄MircoPython固件和MircoPython應(yīng)用程序。
    的頭像 發(fā)表于 09-11 16:02 ?1678次閱讀
    ESP32-S3的MicroPython開(kāi)發(fā)<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>

    開(kāi)發(fā)環(huán)境一鍵部署 | 如何搭建Docker環(huán)境編譯ARM程序?

    智能化科技領(lǐng)域,嵌入式系統(tǒng)開(kāi)發(fā)占據(jù)著極為重要的地位。瑞迅科技RK3568、RK3588主板及核心板以其卓越的性能,為眾多應(yīng)用場(chǎng)景賦能?;?b class='flag-5'>Linux系統(tǒng)搭建其開(kāi)發(fā)環(huán)境,為用戶開(kāi)啟高效開(kāi)發(fā)的大門。Q痛
    的頭像 發(fā)表于 08-15 11:06 ?1000次閱讀
    開(kāi)發(fā)<b class='flag-5'>環(huán)境</b>一鍵部署 | 如何<b class='flag-5'>搭建</b>Docker<b class='flag-5'>環(huán)境</b>編譯ARM程序?

    Linux系統(tǒng)環(huán)境監(jiān)測(cè)終極指南

    Linux系統(tǒng)環(huán)境主要監(jiān)測(cè)CPU、內(nèi)存、磁盤I/O和網(wǎng)絡(luò)流量。
    的頭像 發(fā)表于 06-25 14:41 ?836次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>環(huán)境</b>監(jiān)測(cè)終極指南

    迅為RK3576開(kāi)發(fā)板NPUrknn-toolkit2環(huán)境搭建和使用docker環(huán)境安裝

    迅為RK3576開(kāi)發(fā)板NPUrknn-toolkit2環(huán)境搭建和使用docker環(huán)境安裝
    的頭像 發(fā)表于 06-18 15:22 ?1302次閱讀
    迅為RK3576開(kāi)發(fā)板NPUrknn-toolkit2<b class='flag-5'>環(huán)境</b><b class='flag-5'>搭建</b>和使用docker<b class='flag-5'>環(huán)境</b>安裝

    不借助Linux系統(tǒng),在Windows下如何搭建ZMC900E交叉編譯環(huán)境

    不需要依賴笨重的虛擬機(jī),也不需要安裝雙系統(tǒng)。拋開(kāi)繁瑣的環(huán)境準(zhǔn)備,在Windows上輕松搭建交叉編譯環(huán)境。本文將介紹如何在Windows上搭建交叉編譯
    的頭像 發(fā)表于 05-21 11:34 ?951次閱讀
    不借助<b class='flag-5'>Linux</b>系統(tǒng),在Windows下如何<b class='flag-5'>搭建</b>ZMC900E交叉編譯<b class='flag-5'>環(huán)境</b>