CLion Debug 调试 Makefile 构建的 C 语言程序断点不起作用

news2024/11/16 3:43:12

最近在研究 jattach,打算在本地调试项目,发现 CLion 可以正常编译运行代码,却无法断点 Debug。由于笔者对 C/C++ 项目不熟悉,在此记录研究过程中遇到的一些基本问题与解决方法。

文章目录

    • 解决方式
    • 尝试过的手段
      • 【未解决】找 Native Debugging Support 相关插件
      • 【未解决】尝试安装 gdb
      • 【未解决】配置 CLion 使用 macOS CommandLineTools

解决方式

在 Makefile 中的编译命令增加参数 -g

diff --git a/Makefile b/Makefile
index 7ff43df..fb44679 100644
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@ else
 
   UNAME_S:=$(shell uname -s)
   ifeq ($(UNAME_S),Darwin)
-    CFLAGS ?= -O3 -arch x86_64 -arch arm64 -mmacos-version-min=10.12
+    CFLAGS ?= -g -O3 -arch x86_64 -arch arm64 -mmacos-version-min=10.12
     JATTACH_DLL=libjattach.dylib
   else
     CFLAGS ?= -O3

尝试过的手段

笔者环境为 macOS aarch64。

【未解决】找 Native Debugging Support 相关插件

曾经在 GoLand 使用 Rust 也遇到过无法 Debug 的问题,安装 Native Debugging Support 插件后问题解决。
搜了一下貌似 C 语言没有相关的插件。

【未解决】尝试安装 gdb

brew install gdb

发现 gdb 没有适用于 Apple Silicon 的版本:

gdb: The x86_64 architecture is required for this software.

在这里插入图片描述

【未解决】配置 CLion 使用 macOS CommandLineTools

CLion 的 Toolchains 提供了一个默认配置,使用的都是 CLion 内置的编译工具。
在这里插入图片描述

笔者猜测:是不是应该使用 CommandLineTools 中提供的 clangLLDB?我理解那是苹果专门为 Apple Silicon 准备的版本。

于是创建了一个新的 Toolchains,路径都指定 macOS 的开发者工具。
在这里插入图片描述

程序可以运行,但如果 Debug 就会报错:

error: unknown option: --interpreter=mi2
Use 'lldb --help' for a complete list of options.

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RIG Exploit Kit 仍然通过 IE 感染企业用户

RIG Exploit Kit 正处于最成功的时期,每天尝试大约 2000 次入侵并在大约 30% 的案例中成功,这是该服务长期运行历史中的最高比率。 通过利用相对较旧的 Internet Explorer 漏洞,RIG EK 已被发现分发各种恶意软件系列,包括 Dridex…

内科大机器学习期末重点

1. 什么是机器学习 (由于图床原因导致部分图片错位,可以借鉴着看) 语音识别算法推荐人脸识别垃圾邮件过滤贷款资格审核 2. 学习的概念 与经验有关 学习可以改善系统性能 学习是一个有反馈的信息处理与控制过程 3. 学习分类&#xff1a…

996的压力下,程序员还有时间做副业吗?

996怎么搞副业? 这个问题其实蛮奇怪的:996的压力下,怎么会还想着搞副业呢? 996还想搞副业的原因有哪些? 大家对于996应该都不陌生,总结就是一个字:忙。 996的工作性质就是加班,就…

基于龙芯+国产FPGA 的VPX以太网交换板设计(二)

3.1 板卡技术要求 3.1.1 主要性能指标 本着向下兼容的原则,以太网交换板的设计尽量保留传统信息处理平台的基本功 能和接口,重点考虑提升设备的性能和扩展性。本课题以太网交换板的主要性能指标 如下: (1) 具有大容量无…

一文搞懂华为防火墙的原理和配置

“防火墙”一词起源于建筑领域,用来隔离火灾,阻止火势从一个区域蔓延到另一个区域。引入到通信领域,防火墙这一具体设备通常用于两个网络之间有针对性的、逻辑意义上的隔离。这种隔离是选择性的,隔离“火”的蔓延,而又…

mac安装docker hub及使用

1. docker hub安装 官网:Docker https://hub.docker.com/ 去官网 下载 Docker.dmg 并安装 2. docker hub的使用 step1: 首先克隆一个仓库 Getting Started 项目是一个简单的Github仓库,他包含了你创建镜像的所有东西,并且可以把他当容…

文心一言的蝴蝶振翅,云计算的飓风狂飙

ChatGPT带来的多米诺效应正在不断涌现。社会各界都在关注一系列问题,比如中国版ChatGPT什么时候能来到?其效果如何?类ChatGPT应用的投资与创业前景会怎样?相关产品能带来哪些应用价值?随着百度文心一言等产品相继官宣&…

面试问题【数据库】

数据库数据库的三范式是什么drop、delete、truncate 分别在什么场景之下使用char 和 varchar 的区别是什么数据库的乐观锁和悲观锁是什么SQL 约束有哪几种mysql 的内连接、左连接、右连接有什么区别MyIASM和Innodb两种引擎所使用的索引的数据结构是什么mysql 有关权限的表都有哪…

SpringSecurity常见面试题汇总(超详细回答)

1.什么是Spring Security?核心功能?Spring Security是一个基于Spring框架的安全框架,提供了完整的安全解决方案,包括认证、授权、攻击防护等功能。其核心功能包括:认证:提供了多种认证方式,如表…

线性表 链表表示

初识链表 用一组物理位置任意的存储单元来存放线性表的数据元素。这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。链表中元素的逻辑次序和物理次序不一定相同。 在存储自己内容的同时也存储下一个元素的地址。存…

Adobe illustrator使用教程

抓手工具:绘制大型图片拖动图片 画放大缩小:Alt鼠标滚轮 间接选择工具:点击图标shift 进行多个对象选择,再次点击取消选择(用于对多个对象进行批量操作) 直接选择工具:可以对图案本身进行精细选…

(二十二)操作系统-生产者·消费者问题

文章目录一、问题描述二、问题分析三、PV操作题目分析步骤1. 关系分析2. 整理思路3. 设置信号量4. 编写代码四、能否改变相邻P、V操作的顺序?五、小结1. PV操作题目的解题思路2. 注一、问题描述 系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品…

什么是文件传输中台?

企业文件传输的场景有哪些? 企业日常办公中无时无刻不在产生数据文件。多样化的数据已成为企业的重要资产,更被称为是“新石油”。数据并不是单单存储起来就行了,而是需要高效又安全的让数据流转起来,释放其自身的价值&#xff0…

XGBoost和LightGBM时间序列预测对比

XGBoost和LightGBM都是目前非常流行的基于决策树的机器学习模型,它们都有着高效的性能表现,但是在某些情况下,它们也有着不同的特点。 XGBoost和LightGBM简单对比 训练速度 LightGBM相较于xgboost在训练速度方面有明显的优势。这是因为Ligh…

发票自动OCR识别并录入模板 3分钟免费配置

要问整个公司里和数据打交道最多的职能,非财务莫属了吧。除了每天要处理大量财务数据外,还有发票录入的工作让财务陷入“易燃易爆炸”的工作状态。发票报销看似简单,但发票的类型有很多种,每种发票需要录入的信息也有差别。再加上…

SimpleITK 获取CT spacing 底层原理

SimpleITK 获取CT spacing 底层原理 一、层厚、层间距概念 层厚: CT扫描机扫描出来的断层的层的厚度, 通常用Slice thickness表示, 比如 5mm 层间隔:一般用 Slice interval 或 Slice increment来表示,比如 5mm。在 …

最新!蔚来2022年第四季度被理想汽车超越,或将在2023年全面落后

3月1日,蔚来汽车(NYSE: NIO; HKEX: 9866; SGX: NIO,下称“蔚来”)发布了截至2022年12月31日的第四季度及全年财报。财报显示,蔚来2022年第四季度实现营收160.64亿元(约23.29亿美元),…

SpringBoot实现静态资源映射,登录功能以及访问拦截验证——以黑马瑞吉外卖为例

目录 一、项目简介 二、设置静态资源访问路径 三、实现登录功能 四、拦截访问请求 本篇文章以黑马瑞吉外卖为例 一、项目简介 瑞吉外卖项目分为后台和前台系统,后台提供给管理人员使用,前台则是用户订餐使用 资源我们放在resources下 二、设置静态…

Postman的下载和安装

文章目录一 下载二 安装一 下载 官网下载地址:https://www.postman.com/ 进入官网页面,选择对应的操作系统和版本,然后进入Postman下载页面,然后点击 Windows 64-bit 即可下载,如下 二 安装 Postman的安装很简单&am…

Python每日一练(20230302)

目录 1. 字符串统计 2. 合并两个有序链表 3. 下一个排列 附录 Python字典内置方法 增 删 改 查 其它 1. 字符串统计 从键盘输入一个包含有英文字母、数字、空格和其它字符的字符串,并分别实现下面的功能:统计字符串中出现2次的英文字母&#…