当前位置: 首页 > news >正文

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

最近在研究 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 @@ elseUNAME_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.12JATTACH_DLL=libjattach.dylibelseCFLAGS ?= -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.lryc.cn/news/25739.html

相关文章:

  • ·神经网络
  • 【Java 多线程学习】
  • 【计算机考研408】快速排序的趟数问题 + PAT 甲级 7-2 The Second Run of Quicksort
  • CSS-Grid(网格)布局
  • 软件测试4
  • 996的压力下,程序员还有时间做副业吗?
  • 每日学术速递3.1
  • 金融行业数据模型
  • 【面试题】2023前端vue面试题及答案
  • (哈希查找)leetcode128. 最长连续序列
  • js中splice方法和slice方法
  • c++ argparse
  • 内大892复试真题16年
  • 面试题 05.02. 二进制数转字符串
  • MySQL数据更新操作
  • C# 封装
  • 每日学术速递3.2
  • PCBA方案设计——LCD体重电子秤方案
  • 动态规划--背包问题
  • 从0开始学python -45
  • 如何用BurpSuite抓取手机数据包
  • Linux性能监控工具iostat解析
  • 3D可视化大屏制作真的那么难?没有好用的软件解决吗?
  • C语言|文件读写,代码运行后留下“记忆”
  • 【2023unity游戏制作-mango的冒险】-6.关卡设计
  • JavaScript高级 浏览器WebStorage
  • $ 3 :类型强制转换场景、printf函数
  • 视频会议系统异常中断故障分析案例
  • 什么是文件传输中台?
  • 设计模式-代理模式(Java)