IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> LD_PRELOAD的用法 -> 正文阅读

[开发测试]LD_PRELOAD的用法

作者:recommend-item-box type_blog clearfix

LD_PRELOAD顾名思义,就是重新加载链接库。

一般用于链接库的重定向,例如linux测试lockdep的测试代码,就使用了此功能。

进入源码中的

cd linux-stable-rt-4.19/tools/lib/lockdep 
cat lockdep

#!/bin/bash

LD_PRELOAD="./liblockdep.so $LD_PRELOAD" "$@"

其实大概意思就是

LD_PRELOAD=./liblockdep.so.4.19.148 ./tests/AA

赋值给LD_PRELOAD指定重新加载的动态库,然后运行测试用例AA。
liblockdep.so.4.19.148是我们独立编译出来,用于测试的接口库。

另外,测试程序还使用了#include "xxx.c"的用法,巧妙的将需要的c源文件引用了进来,使编译脚本变得简单,当然,这需要控制源文件的目录不变的前提下。

// SPDX-License-Identifier: GPL-2.0
#include <linux/lockdep.h>
#include <stdlib.h>

/* Trivial API wrappers, we don't (yet) have RCU in user-space: */
#define hlist_for_each_entry_rcu        hlist_for_each_entry
#define hlist_add_head_rcu              hlist_add_head
#define hlist_del_rcu                   hlist_del
#define list_for_each_entry_rcu         list_for_each_entry
#define list_add_tail_rcu               list_add_tail

u32 prandom_u32(void)
{
        /* Used only by lock_pin_lock() which is dead code */
        abort();
}

static struct new_utsname *init_utsname(void)
{
        static struct new_utsname n = (struct new_utsname) {
                .release = "liblockdep",
                .version = LIBLOCKDEP_VERSION,
        };

        return &n;
}

#include "../../../kernel/locking/lockdep.c"
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:21:43  更:2021-08-19 12:22:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:29:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码