dcmake: 一个新的CMake调试器UI

Lobsters Hottest 工具

摘要

dcmake 是一个新的用于 CMake 的 GUI 调试器,基于 Dear ImGui 和 DAP 协议构建,支持对 CMake 脚本进行交互式调试。它借助 AI 辅助快速开发完成。

<p><a href="https://lobste.rs/s/zy7kbn/dcmake_new_cmake_debugger_ui">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/22 16:23

# dcmake:一款全新的CMake调试器UI 来源:https://nullprogram.com/blog/2026/04/07/ 2026年4月7日nullprogram\.com/blog/2026/04/07/ 自3\.27版本(https://cmake.org/cmake/help/latest/release/3.27.html#debugger)(2023年7月)起,CMake提供了(https://cmake.org/cmake/help/latest/manual/cmake.1.html#cmdoption-cmake-debugger)`\-\-debugger`模式,允许软件通过调试适配器协议(Debugger Adaptor Protocol,简称DAP)(https://microsoft.github.io/debug-adapter-protocol/)与其交互操作。该协议类似HTTP,通过传递JSON消息进行通信。调试器前端可以对运行中的CMake进行启动、停止、单步、设置断点、查询变量等操作。当我第一次了解到这个模式时,立刻想到了一个利用它的项目。得益于近期软件工程生产力的飞跃(https://nullprogram.com/blog/2026/03/29/),我仅用30分钟就完成了可工作的原型,并在当天结束时,就构建出一个完整的、跨平台的原生GUI应用程序。我将其命名为**dcmake(https://github.com/skeeto/dcmake)**(“CMake调试器”)。我已在macOS、Windows和Linux上进行了测试。尽管它才诞生几天,却是我构建过的最酷的工具之一。我估计,在2026年之前,要达到这个状态至少需要一个月的时间。 [](https://nullprogram.com/img/dcmake/dcmake.png) 它采用了Dear ImGui(https://github.com/ocornut/imgui)界面,我之前作为用户使用过,但从未亲自构建过。具体来说是使用docking分支(https://github.com/ocornut/imgui/wiki/Docking)。从某种意义上说,这是一个构建调试器的工具集,因此它在极大程度上加速了我的项目开发进程。所有的“窗口”都可以拆离,可以自由浮动或停靠在任意位置,与经典的Visual Studio界面非常接近。我沿用了相同的快捷键:F10单步跳过,F11单步进入,F5启动/继续,Shift+F5停止。点击行号切换断点,右键单击执行到光标处,鼠标悬停变量查看其值。几乎所有的UI状态都能在会话间持久保存,并且启动速度极快。 在过去一个月里,我在UI开发中多次使用AI,效果惊人地高效。我可以大致描述想要的界面,AI就能在几分钟内实现它。它能理解我的意图,填充细节,有时甚至能预判我接下来要提的要求。如果我不确定UI应该如何工作,它也能给出很好的建议。如果我要简单的图标之类,它也能绘制出来。这一切都令人无比振奋。 在macOS和Linux上,它基于GLFW和OpenGL 3渲染运行;在Windows上,则使用原生Win32窗口和DirectX 11渲染。 传递给dcmake的程序参数会填入左上角的参数文本输入框,并在启动时直接传递给CMake。因此,只需在CMake配置命令前加上`d`,即可在调试器中运行它。如果不传参数,则默认设置为“标准”`\-B build`配置。 一般来说,如果你没有特定的查看目标,启动dcmake(在某个项目中)后的第一件事就是按下F10。它会让CMake从`CMakeLists\.txt`的第一行暂停,或者你正在调试的任何脚本的第一行。如果你第一次尝试dcmake,这是一个很好的起点。不断按F10单步执行脚本,观察其配置过程的运行。如果你按F11单步进入脚本,你会越来越深入地进入CMake内部,这非常有启发性。 没有必要去调试`\-\-build`调用。它只是底层构建工具的一个统一接口,此时已经没有CMake可以调试了。不过,它*确实*可以与`\-P`脚本模式(https://cmake.org/cmake/help/latest/manual/cmake.1.html#cmdoption-cmake-P)一起使用。CMake可以作为平台无关的类shell脚本工具(https://claude.ai/public/artifacts/06b50c8f-ff71-4562-8ab5-80adaddff9b7)运行,但与shell脚本不同的是,你可以使用dcmake这样的调试器单步执行它们。 在Windows上,它完全支持Unicode路径,无需UTF-8清单(https://nullprogram.com/blog/2021/12/30/)。这需要一些特殊处理(https://nullprogram.com/blog/2022/02/18/),特别是要避免使用任何C++标准库的I/O功能。当前的顶级AI无法自行处理这一细节。macOS平台需要一些Objective-C代码,这是常有的事,我很高兴这部分不需要我自己去解决。 下一版本的w64devkit(https://github.com/skeeto/w64devkit)将包含dcmake,作为其近期加入CMake的补充。这个新工具在其自身的开发中已经证明非常有用。

相似文章

CADAM

Product Hunt

CADAM 是一个类似于 Tinkercad 的 AI 驱动 CAD 工具,已在 Product Hunt 上发布。

被低估的内置功能:Grand Unified Debugger

Lobsters Hottest

本文重点介绍了Emacs内置的Grand Unified Debugger(GUD)的功能,强调了其多调试器支持和图形化GDB界面,包括通过点击边缘设置断点以及单步执行代码等功能。

ChromeDevTools/chrome-devtools-mcp

GitHub Trending (daily)

Chrome DevTools MCP 是一个开源的模型上下文协议服务器,允许 AI 编程助手(Gemini、Claude、Cursor、Copilot)控制并检查实时 Chrome 浏览器,用于自动化、调试和性能分析。它将 Chrome DevTools 与 Puppeteer 集成,为 AI 助手提供完整的浏览器检查和自动化能力。

manaflow-ai/cmux

GitHub Trending (daily)

cmux 是一个基于 Ghostty 的 macOS 终端,具有垂直标签和通知功能,专为 AI 编码智能体设计,支持 SSH、应用内浏览器以及 Claude Code Teams 集成。