4个版本
使用旧的Rust 2015
0.1.3 | 2018年7月21日 |
---|---|
0.1.2 | 2018年6月26日 |
0.1.1 | 2018年6月26日 |
0.1.0 | 2018年6月26日 |
#554 in 调试
11KB
88 行
Behold
一个简单的库,用于辅助上下文调试。这是Python Behold库的Rust部分移植。
文档
API文档可在此处找到。
变更日志可在此处找到。
核心概念
有时候打印调试是最好的检查运行程序状态的方法。但通常你只关心特定代码路径中的打印。使用Behold
,程序的一部分可以控制另一部分的调试。
所有Behold实例共享相同的全局上下文来控制要打印的内容。然而,可以创建和配置Behold实例来决定如何或打印什么。
上下文调试
BEHOLD.show("testing".to_string())
将将 "testing" 打印到屏幕上。BEHOLD.when(true).show("testing".to_string())
将将 "testing" 打印到屏幕上。BEHOLD.when(false).show("testing".to_string())
不会做任何事情。BEHOLD.when_context("key").show("testing".to_string())
将将 "testing" 打印到屏幕上,但仅当 "testing" 键之前被设置为 true
时。
extern crate behold;
use behold::behold;
fn f(idx: usize) {
behold().show(format!("Hello from f({})!", idx));
}
fn f2(idx: usize) {
// Do something hard to debug
behold().when(idx % 2 == 0).show(format!("Hello from f2({})!", idx));
}
fn f3(idx: usize) {
// Do something hard to debug
behold().when_context(format!("f3-{}", idx).as_str()).show(format!("Hello from f3({})!", idx));
}
fn main() {
for i in 0..3 {
println!("\n");
f(i);
f2(i);
f3(i);
// Context is global
behold().set_context("f3-1", true);
}
}
生成输出
Behold: Hello from f(0)!
Behold: Hello from f2(0)!
Behold: Hello from f(1)!
Behold: Hello from f3(1)!
Behold: Hello from f(2)!
Behold: Hello from f2(2)!
标记打印
每个 Behold 实例都可以配置一个标记来帮助区分输出。
extern crate behold;
use behold::behold;
fn main() {
behold().tag("yolo").show("Hello world!".to_string());
}
生成输出
Hello world!, yolo
上下文执行
有时当某些上下文为真时执行一些调试任务(例如将状态保存到文件)很有用。
extern crate behold;
use behold::behold;
fn main() {
behold().call(&|| { println!("Hello world!"); } );
}
将输出
"Hello world!"
而以下内容
extern crate behold;
use behold::behold;
fn main() {
behold().when(false).call(&|| { println!("Hello world!"); } );
}
将不会输出任何内容。
依赖关系
~0–1.3MB
~17K SLoC