ST源码分析-Clion调试

2023-10-28

lookupdns 是 ST 的一个示例程序,由于 ST 是 makefile 的项目,并没有提供 CMake 文件,所以先演示 一下 如何使用 Clion 来调试 Makefile 的项目。

也可以使用 gdb 调试,不过我个人习惯 用 Clion

注意,Clion 也只是把众多的 命令工具 集成在一起,即使是 CMake 的项目,CLion 也是把 可执行文件 build 出来,然后调 gdb 来调试,只是 Clion 把这些东西界面化了。所以 举一反三 只要用 Makefile 编译出可执行文件,一样能用 Clion 调 gdb 来可视化调试 。

下面开始操作:

1,推荐使用 Ubuntu 16以上系统,下载好 Clion,然后下载 state-thread 项目,用 Clion 打开。

2,点击右上角的 Add Configuration ,添加配置。

3,点击 + 按钮,选择 Makefile Target

4,添加两个 make 规则,一个是 make clean (清除项目),第二个是 make linux-debug(编译生成可执行文件),如下图:

5,现在就可以 在 Clion 里面 编译 ST 项目了,跟在命令窗口执行 make linux-debug 一样,如下图:

6,现在可以添加 Makefile Application 了,如下图:

上图有一个重点,就是那个 Target ,我原来是没有 Target 的,要点后面那个设置按钮,自己加,如下图:

按上图这样填好 target 就行了,为什么要这样填,我也不知道,按理 Clion 直接调 GDB 调试我 指定的执行文件就行了。不管这个,总之 按我上图这样 填好 target,他 Clion就不会报错。

7,现在在 lookupdns.c 文件的 main 入口打一个断点,可以看到,现在已经可以调试了。如下图:

state-thread 的 Clion 调试环境 搭建 成功,完毕。


常见问题:

  1. 有些 CLion 版本没有 Makefile 的插件,要自己装,所以最好使用 2021 版本的 Clion。

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ST源码分析-Clion调试 的相关文章

  • 直流输入过压保护电路

    在嵌入式产品设计中 许多都为电池供电或者USB接口供电 当误操作使供电电压高于芯片工作电压时 就会导致芯片烧坏 带来严重的后果 因此在电源的输入端到芯片的供电输入端 还是很有必要加一个过压保护电路 当输入电压超过设定值 就切断电源 保护芯片
  • java登录远程服务器

    加入ssh的依赖 ch ethz ganymed ganymed ssh2 262 代码实现 因为执行SHELL脚本的时候可能是给出正常的返回值 也可能是异常的信息 这里需要一个JAVA Bean来接收这两个消息 代码如下 import j
  • OpenMMLab开源库总结——笔记1

    摘要 很高兴能加入OpenMMLab AI实战营 成为第二期4班的一名学员 OpenMMLab经过几年的发展和沉淀 其开源项目已经覆盖到计算机视觉的各个领域 OpenMMLab 为香港中文大学 商汤科技联合实验室 MMLab 开源的算法平台
  • mysql软件架构

    客户端是你的业务应用 怎么连接mysql server 一般都是用jdbc Java odbc C 客户端连接mysql 服务 发指令发sql语句等 文件系统 操作系统的文件系统 比如windows的文件系统 linux的文件系统 综上所述
  • 蓝桥杯模拟-排列序数

    问题 X星系的某次考古活动发现了史前智能痕迹 这是一些用来计数的符号 经过分析它的计数规律如下 为了表示方便 我们把这些奇怪的符号用a q代替 abcdefghijklmnopq 表示0 abcdefghijklmnoqp 表示1 abcd
  • 数据结构例题--迷宫

    迷宫 问题要求 定义一个二维数组N M 其中2 lt N lt 10 2 lt M lt 10 如5x5数组 如下所示 int maze 5 5 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1
  • 记录红米k40解BL、Root、装XPOSED

    一 前言 刚从一加转到红米 不得不吐槽虽然一加系统简陋但社区搞基搞机氛围非常好 官方支持root也保修和第三方ROM下大神层出不群 小米的社区放眼望去基本没人讨论root 第三方ROM 都是各种吐槽提问但没人回复的帖子 既然找不到教程那就按
  • qt,信号槽连接不成功原因

    在 Qt 中 信号槽连接不成功的原因可能有很多 下面是一些可能的原因和解决方法 1 信号和槽的声明不匹配 请确保信号和槽的参数类型和数量完全匹配 如果它们不匹配 连接将不会成功 检查信号和槽的声明 确保它们是兼容的 2 信号和槽的作用域问题
  • JSON数组,JSON对象,数组的区别与基本操作整理

    JSON 语法规则 JSON 语法是 javascript 对象表示语法的子集 数据在名称 值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称 值对 JSON 数据的书写格式是 名称 值对 名称 值对组合中的名称写在前面

随机推荐

  • 三大WEB服务器对比分析(apache ,lighttpd,nginx)

    一 软件介绍 apache lighttpd nginx 1 lighttpd Lighttpd是一个具有非常低的内存开销 cpu占用率低 效能好 以及丰富的模块等特点 lighttpd是众多OpenSource轻量级的web server
  • 微信小程序开发(七) swiper 组件

    微信小程序swiper组件 banner 图 广告页 splash 实现效果 代码 js Page data iamgeUrls https img zcool cn community 0106445dc28607a801209e1f62
  • C++11右值 &&引用

    C 11右值 引用 2017年06月06日 11 56 25 Ink cherry 阅读数 2394 标签 C 右值引用 完美转发 个人分类 C C 感觉这篇讲的比较深入细致了 存一下 via http www cnblogs com Ti
  • [技术经理]02 什么是技术经理?

    目录 01什么是技术经理 02总结 01什么是技术经理 什么是技术经理 我用一句话概括为 专业技术团队的管理者 技术经理 是一种管理职位 通常是在软件开发 互联网等科技公司或技术团队中担任 技术经理的职责 是管理和协调技术团队 确保团队能够
  • java写一个圆类求面积_java编程:定义一个圆类,属性为半径,方法为对输入的半径计算其周长和面积?...

    展开全部 java编程e68a8462616964757a686964616f31333365633864定义一个类圆属性半径方法 计算周长面积设置半径读取半径急java编程定义一个类 java编程定义一个类圆属性半径 方法计算周长面积设置
  • “3D 元宇宙技术”在汽车新零售领域的应用与实践

    一 引言 随着不久前汽车之家新零售项目震撼发布 我们直击用户看车选车痛点首次提出ABC新体验模式 以元宇宙科技打造沉浸式交互服务 开放元宇宙能源空间站体验店 为用户打造更 有用 的体验 其中 A 是指一站式选车试车服务 All in one
  • python爬虫基础知识的总结

    什么是爬虫 一 爬虫概述 简单来说 爬虫就是获取网页并提取和保存信息的自动化程序 1 获取页面 如urllib requests等 2 提取信息 Beautiful Soup pyquery lxml等 3 保存数据 MySQL Mongo
  • [Pandas]Dataframe中切片常用技巧

    1 根据值在是否在列表中进行切片 方法一 使用isin方法可以根据DataFrame中的某列的值是否在某个列表中来进行切片 注意 这里不要直接使用in 否则会报错 代码如下 pf pd DataFrame 74 27 EA 4D 93 BD
  • 2. Redis持久化、主从哨兵架构详解

    分布式缓存技术Redis 1 Redis持久化 1 1 RDB快照 snapshot 1 1 1 bgsave的写时复制 COW 机制 1 2 AOF append only file 1 2 1 AOF重写 1 3 Redis 4 0 混
  • 努力一周,开源一个超好用的接口Mock工具——Msw-Tools

    作为一名前端开发 是不是总有这样的体验 基础功能逻辑和页面UI开发很快速 本来可以提前完成 但是接口数据联调很费劲 耗时又耗力 有时为了保证进度还不得不加加班 为了摆脱这种痛苦 经过一周的努力 从零开发了一个灵活无依赖 且集成简单的数据接口
  • IP地址介绍,子网划分(VLSM),构造超网(CIDR) 详解

    概述 IPv4地址从被设计开始一直到现今 一共经历了三次重大变化 分类的IPv4地址 子网划分 构造超网 1 分类的IPv4地址 IP地址是路由器用来跨网段转发IP数据报 寻找路线的32位 二进制代码 由网络地址 网络号 和主机地址 主机号
  • jps命令

    列出目标系统上检测的 Java 虚拟机 JVM 此命令是实验性的 不受支持 概要 jps options hostid options 命令行选项 请参阅Options hostid 应为其生成进程报告的主机的标识符 它hostid可以包括
  • Android 6.0 CoordinatorLayout

    http www cnblogs com yuanchongjie p 4997134 html https www aswifter com 2015 11 12 mastering coordinator http blog csdn
  • 结巴分词参考地址

    Git参考 https github com fxsjy jieba jieba 是一个python实现的中文分词组件 在中文分词界非常出名 支持简 繁体中文 高级用户还可以加入自定义词典以提高分词的准确率 它支持三种分词模式 精确模式 试
  • 自定义input[type="radio"]的样式

    对于表单 input type radio 的样式总是不那么友好 在不同的浏览器中表现不一 对单选按钮自定义样式 我们以前一直用的脚本来实现 不过现在可以使用新的伪类 checkbox 来实现 如果直接对单选按钮设置样式 那么这个伪类并不实
  • [错误解决]paramiko.ssh_exception.SSHException: Error reading SSH protocol banner 设置

    报错信息 上午的时候数据组的同事跟我说有几个程序报错 经过查看log发现找到报错信息 paramiko ssh exception SSHException Error reading SSH protocol banner 经过搜索 得知
  • Callable异步原理简析

    版权声明 本文为博主原创文章 未经博主允许不得转载 https blog csdn net u012664375 article details 66967687 Callable异步执行 应该不会陌生 那么在java中是怎么用的呢 又是如
  • angular抛出 ExpressionChangedAfterItHasBeenCheckedError错误分析

    当变更检测完成后又更改了表达式值时 Angular 就会抛出 ExpressionChangedAfterItHasBeenCheckedError 错误 Angular 只会在开发模式下抛出此错误 在开发模式下 Angular 在每次变更
  • plt.imshow显示cv2读取的图像颜色不对的解决方案

    plt imshow显示cv2读取的图像颜色不对的解决方案 plt imshow与cv2 imshow显示同一图像颜色不一致 原理 Opencv cv2 imread 所读取的图像格式 每个像素为 B G R 的形式 cv2 imshow
  • ST源码分析-Clion调试

    lookupdns 是 ST 的一个示例程序 由于 ST 是 makefile 的项目 并没有提供 CMake 文件 所以先演示 一下 如何使用 Clion 来调试 Makefile 的项目 也可以使用 gdb 调试 不过我个人习惯 用 C