久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1920|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

HC32L110(五) Ubuntu20.04 VSCode的Debug環(huán)境配置

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:912806 發(fā)表于 2022-9-3 22:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本文介紹在Ubuntu20.04下, VSCode中如何設(shè)置對(duì) HC32L110 進(jìn)行 debug

原文: https://www.cnblogs.com/milton/p/16653827.html
倉(cāng)庫(kù)地址: https://github.com/IOsetting/hc32l110-template

如果轉(zhuǎn)載, 請(qǐng)注明出處.

環(huán)境說(shuō)明

本文使用的軟硬件環(huán)境已經(jīng)在前面介紹

硬件
基于 HC32L110 系列MCU的開(kāi)發(fā)板
JLink OB
軟件
Ubuntu20.04
VSCode

配置步驟

安裝配置 Cortex-Debug

在VSCode的插件中, 搜索安裝Cortex-Debug

在VSCode中, 切換到Run And Debug, 點(diǎn)擊上方的 Add Configuration, 會(huì)在 .vscode 目錄下的 launch.json (如果沒(méi)有會(huì)自動(dòng)創(chuàng)建)中添加配置, 需要增加對(duì)應(yīng)的配置信息
  1. "configurations": [
  2.         {
  3.             "name": "Cortex Debug",
  4.             "cwd": "${workspaceFolder}",
  5.             "executable": "${workspaceFolder}/Build/app.elf",
  6.             "request": "launch",        // 可以是launch或attach, 后者表示運(yùn)行中接入, 前者會(huì)執(zhí)行前置任務(wù)并重啟
  7.             "type": "cortex-debug",
  8.             "runToEntryPoint": "main",
  9.             "servertype": "jlink",
  10.             "device": "HC32L110X4",     // 如果是32K的版本, 需要修改為 HC32L110X6
  11.             "interface": "swd",
  12.             "runToMain": true,          // false則從 reset handler 開(kāi)始停留
  13.             "preLaunchTask": "build",   // 根據(jù) tasks.json 中配置的任務(wù)填寫,
  14.             // "preLaunchCommands": ["Build all"], // 如果不使用 preLaunchTask, 可以用這個(gè)參數(shù)指定命令行命令
  15.             "svdFile": "",              // svd 用于觀察外設(shè)
  16.             "showDevDebugOutput": "vscode", // 輸出的日志級(jí)別, parsed:解析后的內(nèi)容, raw:直接輸出, vscode:包含scode調(diào)用和raw
  17.             "swoConfig":
  18.             {
  19.                 "enabled": true,
  20.                 "cpuFrequency": 24000000,
  21.                 "swoFrequency":  4000000,
  22.                 "source": "probe",
  23.                 "decoders":
  24.                 [
  25.                     {
  26.                         "label": "ITM port 0 output",
  27.                         "type": "console",
  28.                         "port": 0,
  29.                         "showOnStartup": true,
  30.                         "encoding": "ascii"
  31.                     }
  32.                 ]
  33.             }
  34.         }
  35.     ]
復(fù)制代碼

具體的配置項(xiàng)含義, 可以參考 Debug Attributes

同時(shí)在 .vscode/settings.json 中增加以下配置, 如果文件不存在則創(chuàng)建. 路徑根據(jù)自己的環(huán)境修改
  1. {
  2.     "cortex-debug.gdbPath": "/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb",
  3.     "cortex-debug.JLinkGDBServerPath": "/opt/SEGGER/JLink/JLinkGDBServerCLExe",
  4. }
復(fù)制代碼


修改 rules.mk

在rules.mk中開(kāi)啟debug, 涉及到兩處, OPT要使用-O0, 表示不執(zhí)行任何優(yōu)化. 使用優(yōu)化后代碼中的部分變量在編譯后會(huì)被丟棄無(wú)法跟蹤

OPT         ?= -O0

在CFLAGS中增加gdb輸出

CFLAGS      += -g -gdwarf-2 # original: -g

這樣編譯后, 尺寸會(huì)比原先大不少

Ubuntu20.04下遇到的問(wèn)題

以上配置后, 點(diǎn)擊 Run And Debug 中的綠色運(yùn)行圖標(biāo)應(yīng)該就能啟動(dòng)Debug, 但是可能在看到以下輸出后就沒(méi)有反應(yīng)了
  1. Reading symbols from /opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-objdump --syms -C -h -w /home/milton/Stm32Projects/hc32_workspace/hc32l110-template/Build/app.elf
  2. Reading symbols from /opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-nm --defined-only -S -l -C -p /home/milton/Stm32Projects/hc32_workspace/hc32l110-template/Build/app.elf
  3. Launching GDB: /opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb -q --interpreter=mi2
  4. 1-gdb-version
復(fù)制代碼


這時(shí)候到命令行執(zhí)行一下命令/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb -q --interpreter=mi2就能看到問(wèn)題

1. libncursesw.so.5: cannot open shared object file
首先是會(huì)有這樣的錯(cuò)誤輸出

/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb -q --interpreter=mi2
/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
觀察ldd可以看到缺少兩個(gè)so: libncursesw.so.5, libpython3.6m.so.1.0

ldd /opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb
    linux-vdso.so.1 (0x00007ffc82998000)
    libncursesw.so.5 => not found
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f326ba1e000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f326ba18000)
    libpython3.6m.so.1.0 => not found
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f326b9f5000)
    libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f326b9f0000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f326b89f000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f326b871000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f326b68f000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f326b674000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f326b482000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f326ba6e000)

libncursesw.so.5可以通過(guò)安裝 libncursesw5 可以解決

sudo apt install libncursesw5

2. libpython3.6m.so.1.0: cannot open shared object file

這樣就剩下另一個(gè)動(dòng)態(tài)連接庫(kù)無(wú)法找到

/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb -q --interpreter=mi2
/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

但是 Ubuntu20.04 自帶的 Python3.8, 無(wú)法安裝 Python3.6

~$ sudo apt-get install libpython3.6
Reading package lists... Done
Building dependency tree      
Reading state information... Done
Note, selecting 'libpython3.6-stdlib' for regex 'libpython3.6'
0 upgraded, 0 newly installed, 0 to remove and 29 not upgraded.

簡(jiǎn)單粗暴的解決方法就是直接用3.8的代替

cd /usr/lib/x86_64-linux-gnu/
$ ll libpython*
lrwxrwxrwx 1 root root      19 Jul  1 20:27 libpython2.7.so.1 -> libpython2.7.so.1.0
-rw-r--r-- 1 root root 3455600 Jul  1 20:27 libpython2.7.so.1.0
lrwxrwxrwx 1 root root      55 Jun 23 04:18 libpython3.8.a -> ../python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.a
lrwxrwxrwx 1 root root      17 Jun 23 04:18 libpython3.8.so -> libpython3.8.so.1
lrwxrwxrwx 1 root root      19 Jun 23 04:18 libpython3.8.so.1 -> libpython3.8.so.1.0
-rw-r--r-- 1 root root 5449112 Jun 23 04:18 libpython3.8.so.1.0
$ sudo ln -s libpython3.8.so.1.0 libpython3.6m.so.1.0

這時(shí)候再運(yùn)行就可以啟動(dòng)了

$ /opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb -q --interpreter=mi2
/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb: Symbol `PyBool_Type' has different size in shared object, consider re-linking
/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb: Symbol `PySlice_Type' has different size in shared object, consider re-linking
/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gdb: Symbol `PyFloat_Type' has different size in shared object, consider re-linking
=thread-group-added,id="i1"
(gdb)

使用

點(diǎn)擊 Run And Debug 中的綠色運(yùn)行圖標(biāo)啟動(dòng)Debug, F10 下一步, F11 進(jìn)入, Shift + F11 跳出. 左側(cè)能觀察到變量值和寄存器值. 操作方法和其它IDE基本一致.


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品视频区 | 亚洲精品一区二区三区在线 | 欧美日韩在线一区二区 | 99视频网站 | 久热精品在线观看视频 | 日韩欧美在线播放 | 色婷婷综合在线观看 | 免费看av大片 | 精品免费视频一区二区 | 亚洲视频在线观看 | 日韩欧美精品 | 少妇精品亚洲一区二区成人 | 欧美激情国产日韩精品一区18 | 亚洲一区国产 | 91麻豆精品一区二区三区 | 日韩欧美三区 | 99爱免费| 亚洲精品一区二区三区四区高清 | 亚洲精品欧洲 | 亚洲国产精品日本 | 欧美国产日韩一区二区三区 | 亚洲精品无 | 成人精品鲁一区一区二区 | 久久中文视频 | 91在线精品秘密一区二区 | 日韩人体视频 | 欧美日韩在线播放 | 爱爱小视频| 国产精品欧美一区喷水 | 一区二区三区欧美 | 澳门永久av免费网站 | 成人小视频在线免费观看 | 免费在线观看一区二区三区 | 免费黄色网址视频 | 中文字幕亚洲国产 | 精品久久一区 | 9999在线视频 | 国产精品美女久久久久久久久久久 | 丝袜美腿一区二区三区动态图 | 一级在线观看 | 亚洲一二三在线 |