12次发布

0.1.7 2022年12月27日
0.1.6 2020年10月22日
0.1.5 2020年4月16日
0.1.4 2018年3月7日
0.0.4 2015年4月22日

#717 in 过程宏

Download history 3298/week @ 2024-03-14 2692/week @ 2024-03-21 1918/week @ 2024-03-28 1215/week @ 2024-04-04 1244/week @ 2024-04-11 1432/week @ 2024-04-18 956/week @ 2024-04-25 1650/week @ 2024-05-02 1946/week @ 2024-05-09 1805/week @ 2024-05-16 1150/week @ 2024-05-23 1263/week @ 2024-05-30 1688/week @ 2024-06-06 3154/week @ 2024-06-13 2856/week @ 2024-06-20 3053/week @ 2024-06-27

10,930每月下载量
3 crate 中使用

MIT 协议

32KB
566 代码行

trace

Unit tests Latest Version Documentation License

一个用于跟踪函数执行过程的过程宏。

#[trace] 添加到函数、模块或实现的最上方,将插入 impl 中的 println! 语句,在受影响的函数的开始和结束时通知您函数的进入和退出,并打印参数和返回值。这对于快速调试是否调用了应该调用的函数非常有用,无需手动插入打印语句。

请参阅 examples 目录和 文档 以了解如何使用和配置此库的更多详细信息。

安装

在您的 Cargo.toml 文件中将其添加为依赖项

[dependencies]
trace = "*"

示例

use trace::trace;

trace::init_depth_var!();

fn main() {
    foo(1, 2);
}

#[trace]
fn foo(a: i32, b: i32) {
    println!("I'm in foo!");
    bar((a, b));
}

#[trace(prefix_enter="[ENTER]", prefix_exit="[EXIT]")]
fn bar((a, b): (i32, i32)) -> i32 {
    println!("I'm in bar!");
    if a == 1 {
        2
    } else {
        b
    }
}

输出

[+] Entering foo(a = 1, b = 2)
I'm in foo!
 [ENTER] Entering bar(a = 1, b = 2)
I'm in bar!
 [EXIT] Exiting bar = 2
[-] Exiting foo = ()

依赖项

~1.5MB
~35K SLoC