< 返回版块

nooly1998 发表于 2021-08-13 15:01

Tags:Rust,代码追踪

我目前打算编写一个日志库用作练习,我要怎么来想Java的反射那样来追踪调用函数的代码。另外我还需要获取代码所在的文件和行数,我要怎么做?

评论区

写评论
作者 nooly1998 2021-09-13 17:02

谢谢

--
👇
wuhx: Rust没有运行时,不能反射,只能在编译时用宏获取

文件名,行号你可以用line!,file!宏

函数名暂不支持,但已经有人提rfc了 https://github.com/rust-lang/rfcs/issues/1743

另外,rust的log crate本身是支持输出行号文件名的

wuhx 2021-08-17 23:29

Rust没有运行时,不能反射,只能在编译时用宏获取

文件名,行号你可以用line!,file!宏

函数名暂不支持,但已经有人提rfc了 https://github.com/rust-lang/rfcs/issues/1743

另外,rust的log crate本身是支持输出行号文件名的

7sDream 2021-08-13 23:33

可以看看 https://docs.rs/backtrace

作者 nooly1998 2021-08-13 17:05

感谢帮助,正在深入了解。

--
👇
Pikachu: 文件和行数可以用标准库里的file!和line!。函数名称方面,我暂时不知道。

作者 nooly1998 2021-08-13 17:04

感谢回复,目前正在了解。 从编译器行为上来看,感觉是可以获取方法名等信息的,但是Rust它不是Java那样的runtime型语言,要做到这些功能是怎样的一个思路呢?

--
👇
ruby: 用 https://github.com/namhyung/uftrace 试试?

Rust 可以通过 instrument-mcount 的编译参数记录函数调用

Pikachu 2021-08-13 16:42

文件和行数可以用标准库里的file!和line!。函数名称方面,我暂时不知道。

ruby 2021-08-13 16:38

https://github.com/namhyung/uftrace 试试?

Rust 可以通过 instrument-mcount 的编译参数记录函数调用

1 共 7 条评论, 1 页