如何在IntelliJ调试Kotlin时显示kotlin.time.Duration的toString()结果
IntelliJ IDEA调试Kotlin Duration时,让调试器显示toString()结果
问题场景
使用Kotlin的kotlin.time.Duration对象时,通过println能输出格式化后的结果(如"1h"),但在IntelliJ调试器中查看变量时,默认显示的是其底层存储的长整型数值(如7200000000000)。示例代码:
val test: Duration = 1.hours println(test) // 控制台输出:"1h"
调试器默认显示:
test: long = 7200000000000
解决方法
方法一:全局配置自定义类型渲染器(永久生效)
- 打开IntelliJ设置(快捷键
Ctrl+Alt+S,或通过File → Settings) - 导航到
Build, Execution, Deployment → Debugger → Data Views → Kotlin - 在「Type Renderers」区域,点击
+按钮添加新渲染器 - 按以下参数配置:
- 类型名称:填写
kotlin.time.Duration - 勾选「Use following expression」,输入
toString() - 可选:勾选「Use in toString() view」和「Use in tree view」,确保所有调试视图都应用该规则
- 类型名称:填写
- 保存设置后,重启当前调试会话,即可看到Duration变量显示为格式化后的字符串。
方法二:临时切换toString视图(单次生效)
在调试会话中:
- 选中目标Duration变量,右键选择
View as → toString() - 或点击变量右侧的「更多选项」按钮(
...),选择「View as toString()」
这种方式仅对当前调试会话的该变量生效,适合临时查看需求。
原因说明
Kotlin的Duration是inline class,底层基于长整型存储时间值,IntelliJ调试器默认会优先展示inline class的底层原始值,而非其重写的toString()返回的格式化结果,因此需要手动配置渲染规则来改变显示方式。
内容的提问来源于stack exchange,提问作者Daniel Machnik
相关产品推荐
相关产品推荐

