Swift 5.9 Backtracer 现在支持并发,提高了可读性和 Linux 支持

Swift 5.9 新特性总结

Swift 5.9 在扩展语言功能(如宏和借用式内存管理)的同时,还引入了一些有助于程序调试的新特性,包括进程外崩溃处理程序、即时调试支持以及回溯功能,这些功能使得在使用结构化并发时更容易解释控制流。

进程外崩溃处理程序

这是一个强大的新功能,可以防止程序在正常情况下崩溃,并允许开发者检查或附加调试器。当该功能启用且程序崩溃时,系统会显示一个提示,允许用户更改回溯器设置、生成新的回溯、列出加载的镜像、显示寄存器和内存内容,并获取进程中所有线程的列表。此外,开发者还可以附加调试器到崩溃的进程中,以交互方式检查其状态。如果未选择任何选项,程序将在 30 秒或可配置的时间后崩溃。

该功能特别适用于 Linux 开发者,因为在 Linux 上,程序崩溃通常只会显示简短的错误信息,而没有其他辅助工具。因此,该崩溃处理程序在 Linux 上默认启用,而在 macOS 上需要手动启用。Windows 目前不支持此功能,但开发者可以通过操作系统内置的崩溃报告获取更多崩溃信息。

并发感知的回溯器

回溯器现在支持并发感知,这意味着它能够回溯异步帧,例如通过 await 语句执行的 async 函数。在这种情况下,await/async 调用将像普通调用一样出现在回溯中,而不会显示属于运行时 await/async 机制的中间帧。此功能要求回溯器能够查找程序符号,以判断帧是否为异步。

可配置的回溯器

Swift 5.9 的回溯器还提高了可读性,允许开发者配置回溯器生成的最大帧数以及希望在堆栈顶部显示的帧数。此外,默认情况下,回溯器会跳过系统帧和 Swift 的 thunk(这些通常对应用开发者没有太大意义)。

总结

Swift 5.9 通过引入进程外崩溃处理程序、并发感知的回溯器以及可配置的回溯功能,显著提升了调试体验,特别是在处理并发程序时。这些改进使得开发者能够更轻松地诊断和修复程序中的问题。

阅读 99
0 条评论