哈Ha!
窗外的夏天几乎无声无息地向我们飞来,因为我们所有这些月都致力于开发用于C ++-CLion的跨平台开发环境2019.2的新版本。 我们做了很多事情:进行一次内部Hackathon,尝试新想法,并为立即发布带来许多更正和新功能。 但是首先是第一件事。

简而言之,在此版本中,我们:
- 我们继续完善对嵌入式系统开发的支持:出现了新的调试功能和查看外围设备。
- 用于MSVC的实验调试器已达到可接受的质量。
- 我们完全重写了clangd上Unused Includes上的代码验证,从而增加了配置不同策略的能力。
- 为函数调用参数和lambda提供了提示,以提高代码的可读性。
- 我们进行了团队内部的Hackathon来提高生产力,提出了许多新方法并设法实现了一些改进。
- 我们在Shell Script插件中内置了超过20种语言的语法突出显示功能,并更新了Rust插件。
当然,
这还不是全部 。 我们将在下面详细讨论,但是如果您准备立即尝试,请进入并从
我们的网站下载构建。 与往常一样,可以免费试用30天。
嵌入式开发的新功能
在以前的版本中,出于某种原因,许多人认为我们只关注STM32板。 当然,这是许多研究(包括我们的国内研究)中最有趣和广泛的市场之一,但是我们现在正在尝试解决更一般的问题。 例如,我们在CLion的各种板上扩展了调试功能。
以前,唯一的选择是OpenOCD调试器的配置-OpenOCD下载和运行。 现在出现了另一个-嵌入式GDB服务器。 实际上,如果开发板支持通过某些兼容的GDB服务器进行调试,则可以通过CLion在其上进行调试。 该配置涵盖了OpenOCD,ST-Link GDB服务器,Segger J-Link GDB服务器,QEMU等情况。

创建和配置适当的配置就足够了-指定GDB服务器的路径,传递给它的参数,也许还有一些更高级的设置。 现在,在此配置下运行调试,您可以直接从CLion在板上调试!
现在有一个重要的限制影响调试嵌入式系统的两种配置-它们当前仅适用于CMake上的项目。 将来,我们计划增加针对定制设计模型(
CPP-16079 )运行它们的功能。
对于嵌入式系统的现有调试配置(Embedded GDB Server和OpenOCD Download&Run),新版本现在都具有在调试过程中查看外围设备的功能。 通常,以
.svd格式
文件为ARM系列设备指定外围设备。 这些规范现在可以加载到CLion中,并直接在调试器窗口中查看选定的外围设备:

所有外设在只读模式下仍然可用,而按名称进行搜索时,可以查看不同模式(十六进制,十进制,八进制和二进制)中的值。 您可以在我们的
博客 (英文)中阅读更多有关此的内容。
用于MSVC的实验调试器
您没看错-在2019.2版中,CLion引入了针对使用MSVC编译的代码的实验调试器! 现在让我们更详细地了解顺序。
在CLion中长期使用时,在Windows平台上进行开发时,不仅可以使用MinGW和Cygwin工具链,还可以使用Visual Studio。 您可以在CLion中指定安装的VS的路径,然后从此处使用MSVC编译器和脚本来配置环境。 但是调试器长期存在问题。 事实是Visual Studio本身使用的调试器是专有的。 简而言之,除Microsoft工具外,没有其他地方可以在许可下使用它。 还有另一种技术-dbgeng.dll,可在其上实现CDB和WinGDB调试器。 我们测试的第一件事是她。 但是在我们看来,要处理大量PDB文件的二进制文件上的严重崩溃和性能不佳的问题,并不是很有希望的(尽管我们首先尝试过)。 然后事实证明,还有第三种选择-在LLDB之上实现调试器。 已经有了成就,我们只需要继续这项工作。 我们做了什么! 顺便说一下,我们已经将所有更改(除了当前对本机数据可视化工具的支持之外)都放入了LLVM向导中。
如何启用? 正如我已经写过的那样,这个机会仍然是实验性的。 称其为成熟的调试器还为时过早,它具有许多局限性和不足之处,并且性能需要进行重大优化。 在“维护”对话框中启用了此实验性功能(在Linux / Windows上为
Shift+Ctrl+Alt+/
,在macOS上为
⌥⇧⌘/
)。 实验功能|
cidr.debugger.lldb.windows 。 现在,Visual Studio工具链提供了一个新的调试器:

调试器最初对Studio随附的本机可视化工具以及项目中提供的自定义自定义工具提供支持。 目前,此功能需要明确包含在设置中: 构建,执行,部署| 调试器数据视图| 为LLDB启用NatVis渲染器。 在第一个更新中,我们计划修复可视化工具的几个关键问题,然后可能默认情况下将其打开。

如果您打算尝试使用新的实验性调试器,建议您熟悉
我们博客中的已知限制和问题列表。
其他调试器改进
除了新的实验调试器以外,我们还进行了其他一些改进:
- 在内置的GDB / LLDB控制台中,在CLion的调试器窗口中, 调试器命令的自动完成现在可以工作(使用
Tab
或Ctrl+Space
)。 - 现在可以即时验证字符串断点,并更新它们的状态并以相应图标的形式显示给用户。 最有趣的类型是Invalid ,它被添加来标识当前可执行代码中不可用的断点或没有调试符号的断点(在这种情况下,加载它们后,断点的状态将自动更新):

- 在新版本的调试器中查看内存(“内存视图”)时,可以切换到任意地址(通过数字地址或变量名/地址),以及以ASCII格式显示内存:

代码编辑器的改进
在这方面有几项重大改进。 首先,我们完全重写了“
未使用的包含”代码检查,并默认将其打开。 以前,它也在那里,但是它提供了大量误报,因此我们默认将其关闭。 为什么会变得更好? 我们完全基于第二个用于解析代码的附加工具(完全基于Clangd)重写了验证。 因此,这是一个明显的限制-仅当未禁用Clangd(默认情况下启用)时,新版本才可以使用。 但是现在,在检查“未使用的包含”时,出现了几种策略,您可以在其中选择:

默认情况下,使用
``检测未直接使用'' ,它本质上最接近
包含您所使用的原理,即如果未在该文件中直接使用头文件中的声明,则将此类头文件标记为未使用。
在检查设置中(设置/首选项|编辑器|检查| C / C ++ |未使用的代码|未使用的include伪指令),您还可以选择是否在头文件本身中运行检查。 是的,它仅在存在
#pragma或标头防护的标头文件中起作用。 同样重要的是要知道,如果源文件中存在编译错误,则检查将不会显示未使用的文件。
自从上一发行版以来,CLion除了内置的格式支持
ClangFormat作为替代的代码格式设置工具。 在此版本中,我们为.clang格式的配置文件添加了内置的JSON方案。 并因此,我们能够添加一些功能,这些功能对于将在CLion中修改.clang格式文件的用户可能有用:
- 对于选项及其值,已出现自动完成功能。
- 在选项的自动完成窗口中,现在有选项的描述。
- 快速文档文档窗口(在Windows / Linux上为
Ctrl+Q
,在macOS为F1
)显示了有关选项及其含义的文档以及示例。 - 添加了有效值选项的验证。

参数提示
如果编写了函数(也许不是您本人),以便将3个整数作为参数传递给该函数,该怎么办? 如何通过函数调用来理解所传递的值是什么意思? 当然,您可以在文档窗口中看到功能签名,转到功能定义或调用参数信息(Parameter Info)。 如果您不执行这些明确的操作?
在版本CLion 2019.2中,出现了用于参数的工具提示-调用函数,lambda,构造函数,初始化列表或使用宏时,CLion在参数传递之前显示参数名称:

在确实难以理解将哪些值传递给哪些参数的情况下(即,是否使用具有多个操作数的文字或表达式作为参数),会显示提示。
有关更多详细信息,请参见博客文章 。
性能表现
当然,经常有人问我们有关性能改进的问题。 我重复一遍,对我们来说,这是最优先的任务,但事实证明,点更改不多,而全局更改花费的时间超过1-2个发布周期。 现在有几个如此大的变化。 基本上,它们与CLion中的解析器与平台体系结构的交互方式有关(在C ++中,该体系结构并不总是将很长的解析代码隐藏在一个简单的操作后面)。
今年夏天,我和团队决定举行一次内部Hackathon,以识别CLion体系结构和平台中最脆弱的地方,尝试新的大胆构想并检验一些旧假设。 我们喜欢结果。 如果可能,我们计划在2019.3。之前发布一些新想法。
但是2019.2版本并没有没有性能改进:
- 我们摆脱了许多减速问题,并冻结了就地重命名的重构。
- 改进了自动补全性能,适用于合格的表达式。
- 在远程工作的情况下,我们减少了I / O操作的数量,这极大地加快了有关编译器的信息的收集,并因此加快了CMake项目的下载速度。
- 等改进。
不只是C ++
从CLion 2019.2中的IntelliJ平台开始,已经进行了许多改进以与其他语言一起使用。
TextMate语法现在提供了超过
20种语言的语法高亮显示(可以在“设置” /“首选项” |“编辑器” |“ TextMate捆绑软件”中找到语言的完整列表)。 当然,如果对此语言提供了CLion(Python,JavaScript,HTML,Objective-C,SQL)的扩展支持,则将使用它,但是对于诸如Ruby之类的语言,最简单的突出显示可能会有用:

在C ++项目中,经常有各种各样的
脚本 。 Shell脚本插件现在内置在CLion中。 它不仅提供代码高亮显示,还提供自动补全和文本重命名:
Rust 插件已收到许多有用的更新。 从新的实验性宏扩展工具(“设置/首选项” |“语言和框架” |“ Rust” |“扩展”声明性宏)到“
重复代码段” ,“
评估表达式 ”中调试器中的各种新的快速修复和自动完成。 顺便说一句,在CLion中,此插件的最大用途是现在JetBrains的所有IDE中!
演示版
有关CLion 2019.2新功能的传统视频(英语):
这就是一次。 感谢您阅读到底! 问题,愿望,错误报告和想法仅在评论中表达! 我们将一如既往地乐于回答。
您的JetBrains CLion团队发展动力