nooly1998 发表于 2021-08-13 15:01
Tags:Rust,代码追踪
我目前打算编写一个日志库用作练习,我要怎么来想Java的反射那样来追踪调用函数的代码。另外我还需要获取代码所在的文件和行数,我要怎么做?
谢谢
-- 👇 wuhx: Rust没有运行时,不能反射,只能在编译时用宏获取
文件名,行号你可以用line!,file!宏
函数名暂不支持,但已经有人提rfc了 https://github.com/rust-lang/rfcs/issues/1743
另外,rust的log crate本身是支持输出行号文件名的
Rust没有运行时,不能反射,只能在编译时用宏获取
可以看看 https://docs.rs/backtrace
感谢帮助,正在深入了解。
-- 👇 Pikachu: 文件和行数可以用标准库里的file!和line!。函数名称方面,我暂时不知道。
感谢回复,目前正在了解。 从编译器行为上来看,感觉是可以获取方法名等信息的,但是Rust它不是Java那样的runtime型语言,要做到这些功能是怎样的一个思路呢?
-- 👇 ruby: 用 https://github.com/namhyung/uftrace 试试?
Rust 可以通过 instrument-mcount 的编译参数记录函数调用
文件和行数可以用标准库里的file!和line!。函数名称方面,我暂时不知道。
用 https://github.com/namhyung/uftrace 试试?
评论区
写评论谢谢
--
👇
wuhx: Rust没有运行时,不能反射,只能在编译时用宏获取
文件名,行号你可以用line!,file!宏
函数名暂不支持,但已经有人提rfc了 https://github.com/rust-lang/rfcs/issues/1743
另外,rust的log crate本身是支持输出行号文件名的
Rust没有运行时,不能反射,只能在编译时用宏获取
文件名,行号你可以用line!,file!宏
函数名暂不支持,但已经有人提rfc了 https://github.com/rust-lang/rfcs/issues/1743
另外,rust的log crate本身是支持输出行号文件名的
可以看看 https://docs.rs/backtrace
感谢帮助,正在深入了解。
--
👇
Pikachu: 文件和行数可以用标准库里的file!和line!。函数名称方面,我暂时不知道。
感谢回复,目前正在了解。 从编译器行为上来看,感觉是可以获取方法名等信息的,但是Rust它不是Java那样的runtime型语言,要做到这些功能是怎样的一个思路呢?
--
👇
ruby: 用 https://github.com/namhyung/uftrace 试试?
Rust 可以通过 instrument-mcount 的编译参数记录函数调用
文件和行数可以用标准库里的file!和line!。函数名称方面,我暂时不知道。
用 https://github.com/namhyung/uftrace 试试?
Rust 可以通过 instrument-mcount 的编译参数记录函数调用