Julia是否存在类似Rust中dbg!宏的等效调试工具?
Julia 中类似 Rust dbg! 宏的调试工具
你可以用以下几种方式实现类似 Rust dbg! 的调试效果,同时解决「仅显示最后一个无分号语句结果」的问题:
内置方案:@show 宏
这是Julia内置最便捷的替代工具,会直接打印表达式本身和对应的结果,每个调用都会输出,不会只显示最后一个。示例:
function main() @show 1 + 2 @show 3 * 4 end main()
输出结果:
1 + 2 = 3 3 * 4 = 12
默认不显示文件名和行号,如果需要位置信息,可以结合日志模块实现。
带位置信息的调试:Logging 模块
通过配置Logging模块的日志格式,让输出包含文件名和行号,更贴近Rust dbg!的输出风格:
using Logging # 配置日志,让输出带上文件和行号信息 global_logger(ConsoleLogger(stderr, Debug; meta_formatter=(_, _, _, loc) -> "[$(loc.file):$(loc.line)] ")) function main() @debug 1 + 2 @debug 3 * 4 end main()
输出类似:
[Main.jl:8] 1 + 2 = 3 [Main.jl:9] 3 * 4 = 12
第三方包增强:DbgMacros.jl
如果想要完全贴近Rust dbg!的体验,可以安装DbgMacros.jl包,它的@dbg宏会自动输出位置信息、表达式和结果:
# 先安装包:using Pkg; Pkg.add("DbgMacros") using DbgMacros function main() @dbg 1 + 2 @dbg 3 * 4 end main()
输出结果:
[Main.jl:6] 1 + 2 = 3 [Main.jl:7] 3 * 4 = 12
另外,要是你只是想让多个表达式的结果都显示(类似MATLAB的行为),除了上述工具,也可以把多个表达式用逗号分隔放在函数最后一行,不过@show系列工具显然更灵活,能按需输出指定表达式的结果。
内容的提问来源于stack exchange,提问作者mcmuffin6o
相关产品推荐
相关产品推荐

