#mocking #x86-64 #debugging #replace #architecture

mockrs

一个提供X8664Mocker以模拟函数调用并拦截x86_64架构的crate

10次发布

0.1.9 2024年8月3日
0.1.8 2024年7月28日
0.1.2 2024年6月26日

#163 in 测试

Download history 337/week @ 2024-06-24 99/week @ 2024-07-01 359/week @ 2024-07-08 16/week @ 2024-07-15 231/week @ 2024-07-22 175/week @ 2024-07-29 21/week @ 2024-08-05

479次每月下载

MIT许可证

18KB
316 代码行

mockrs Crate文档

概述

《mockrs》crate提供了一个强大的工具,用于在Rust中进行函数模拟和拦截,专门针对x86_64架构。此实用工具特别适用于测试和调试目的,在需要暂时替换函数行为时非常有用。

主要功能

  • 函数模拟:用模拟实现替换函数的功能。
  • 线程本地存储:跟踪每个线程的模拟。

用法

要使用mockrs,将其包含在您的Cargo.toml中,然后在Rust代码中导入。

[dependencies]
mockrs = "0.1.*" # Replace with the actual version number

基本示例

以下是一个使用mockrs模拟add函数的简单示例

use mockrs::mock;

fn add(a: i64, b: i64) -> i64 {
    a + b
}

fn mock_add(_a: i64, _b: i64) -> i64 {
    100
}

fn main() {
    assert_eq!(add(1, 2), 3);
    let mocker = mock!(add, mock_add);
    assert_eq!(add(1, 2), 100);
    drop(mocker);
    assert_eq!(add(1, 2), 3);
}

API参考

X8664Mocker

X8664Mocker结构是crate的核心,提供模拟函数的功能。

  • pub fn mock(old_func: usize, new_func: usize) -> X8664Mocker:创建一个新的X8664Mocker实例来模拟指定的函数。

mock!

一个方便的宏,用于创建一个新的X8664Mocker实例。

  • mock!($old_func:expr, $new_func:expr): 将原始函数 $old_func 替换为新函数 $new_func

安全性和注意事项

  • mockrs 在低级别运行,操作内存和处理信号。请谨慎使用,并确保原始函数和新函数具有兼容的签名。
  • 此软件包仅设计用于 x86_64 架构。

贡献

欢迎向 mockrs 软件包贡献!请随时提交拉取请求或创建问题报告来报告错误和功能请求。

许可证

mockrs 软件包采用 MIT 许可证。更多信息请参阅 LICENSE


此 README 文件是根据提供的源代码自动生成的。有关更详细的文档,请参阅代码中的内联注释。

依赖项

~15MB
~329K SLoC