- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 GT-i9300 上加载一个简单的 Systemtap 模块
我得到了错误
Error inserting module '/sdcard/systemtap/modules/monitor_fopen.ko': Unknown symbol in module
我采取的步骤:
我通过安装这个 Rom 来做到这一点
# ====================================================
# Add toolchain
user@ubuntu1210:~/Programs$ git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7
user@ubuntu1210:~$ sudo gedit .bashrc
# Toolchain
export PATH=${PATH}:~/Programs/arm-linux-androideabi-4.7/bin
# Reboot ubuntu
# ====================================================
# ====================================================
# Download and extract to ~/android/kernel :
# https://github.com/SlimRoms/kernel_samsung_smdk4412.git
user@ubuntu1210:~$ cd android/kernel/kernel_samsung_smdk4412/
# ====================================================
# ====================================================
# Set configuration for compiling
user@ubuntu1210:~/android/kernel/kernel_samsung_smdk4412$ make clean -j4 ARCH=arm SUBARCH=arm CROSS_COMPILE=arm-linux-androideabi-
user@ubuntu1210:~/android/kernel/kernel_samsung_smdk4412$ make ARCH=arm SUBARCH=arm CROSS_COMPILE=arm-linux-androideabi- slim_i9300_defconfig
user@ubuntu1210:~/android/kernel/kernel_samsung_smdk4412$ gedit .config
# Enable config parameters:
CONFIG_DEBUG_INFO, CONFIG_KPROBES, CONFIG_RELAY, CONFIG_DEBUG_FS, CONFIG_MODULES, CONFIG_MODULE_UNLOAD
# ====================================================
# Build Kernel
user@ubuntu1210:~/android/kernel/kernel_samsung_smdk4412$ make -j4 ARCH=arm SUBARCH=arm CROSS_COMPILE=arm-linux-androideabi-
# Download and extract bootimg_tools.zip from
# http://forum.xda-developers.com/showpost.php?p=44670032&postcount=12
#
# Download correct ROM .zip file and extract boot.img to the same folder as bootimg_tools
user@ubuntu1210:~/bootimg_tools$ perl split_bootimg.pl boot.img
user@ubuntu1210:~/bootimg_tools$ perl unpack_ramdisk boot.img-ramdisk.gz ramdisk
user@ubuntu1210:~/bootimg_tools$ perl repack_ramdisk ramdisk boot.img-ramdisk.cpio.gz
user@ubuntu1210:~/bootimg_tools$ cp /home/user/kernel_samsung_smdk4412/arch/arm/boot/zImage boot.img-kernel
user@ubuntu1210:~/bootimg_tools$ ./mkbootimg --kernel boot.img-kernel --ramdisk boot.img-ramdisk.cpio.gz --cmdline 'console=null androidboot.hardware=qcom user_debug=31 zcache' --base 0x80200000 --pagesize 2048 -o boot.img
# Download and install heimdall
# https://bitbucket.org/benjamin_dobell/heimdall/downloads
user@ubuntu1210:~/bootimg_tools$ adb reboot bootloader
user@ubuntu1210:~/bootimg_tools$ sudo heimdall flash --BOOT boot.img --verbose
user@ubuntu1210:~$ mkdir systemtap
user@ubuntu1210:~$ cd systemtap/
user@ubuntu1210:~/systemtap$ git clone https://github.com/flipreverse/systemtap-android.git
user@ubuntu1210:~/systemtap$ cd systemtap-android/
user@ubuntu1210:~/systemtap/systemtap-android$ git submodule init
user@ubuntu1210:~/systemtap/systemtap-android$ git submodule update
user@ubuntu1210:~/systemtap/systemtap-android$ sh build.sh
user@ubuntu1210:~$ cd /home/user/systemtap/systemtap-android/scripts/
user@ubuntu1210:~$ vi monitor_fopen.stp
#! /usr/bin/stap
probe begin
{
printf("start monitoring");
}
probe end
{
printf("end monitoring");
}
user@ubuntu1210:~$ /home/user/systemtap/systemtap-android/installed/bin/stap
-p 4 -v
-a arm
-B CROSS_COMPILE=/home/user/Programs/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-
-r /home/user/android/kernel/kernel_samsung_smdk4412/
-j /home/user/systemtap/systemtap-android/installed/share/systemtap/tapset/
-R /home/user/systemtap/systemtap-android/installed/share/systemtap/runtime/
-t -g -m monitor_fopen /home/user/systemtap/systemtap-android/scripts/monitor_fopen.stp
https://github.com/flipreverse/systemtap-android-app
Superuser.apk 应该问你 Systemtap 是否可以有 root 权限
user@ubuntu1210:~$ adb push monitor_fopen.ko /sdcard/systemtap/modules/monitor_fopen.ko
user@ubuntu1210:~$ adb shell
shell@android:/ $ su
root@android:/ # cd /data/data/com.systemtap.android
root@android:/data/data/com.systemtap.android # sh start_stap.sh
modulename=monitor_fopen
moduledir=/sdcard/systemtap/modules
outputname=monitor_fopen_2014.mm.dd_sss
outputdir=/sdcard/systemtap/stap_output
logdir=/sdcard/systemtap/stap_log
rundir=/sdcard/systemtap/stap_run
stapdir=/data/data/com.systemtap.android
:q!
user@ubuntu1210:~$ adb shell
shell@android:/ $ cd sdcard/systemtap/stap_log/
shell@android:/sdcard/systemtap/stap_log $ cat monitor_fopen_2014.mm.dd_sss.txt
加载的内核模块:monitor_fopen.ko输出文件:monitor_fopen_2014.mm.dd_sss.*插入模块“/sdcard/systemtap/modules/monitor_fopen.ko”时出错:模块中的未知符号
我不知道我在哪一步出错了。有人知道吗?
最佳答案
感谢@adelphus,他记得我使用 dmesg,我发现了错误:
Android: Unknown symbol _GLOBAL_OFFSET_TABLE_
在this site的帮助下我将内核的 Makefile 编辑为
CFLAGS_MODULE = -fno-pic
然后重做我的 OP 中的所有其他步骤。
关于Android Systemtap 无法加载模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535968/
好吧,我正尝试在 SDT 标记上探索我自己的应用程序。我写了一个 systemtap 脚本来探测它,但是 systemtap 在第 5 次之前没有显示任何错误,然后在第 5 次(开始运行)之后,它就什
我想访问从 glibc 的“打开”函数返回的数据,例如文件名或文件描述符 我试试 probe process("/lib*/libc.so.*").function("open") { fd =
我想访问从 glibc 的“打开”函数返回的数据,例如文件名或文件描述符 我试试 probe process("/lib*/libc.so.*").function("open") { fd =
以下 systemtap 脚本无法编译: probe process("myexe").function("myFun").return { print("hi mom\n") } 它说: seman
我正在尝试在我的 GT-i9300 上加载一个简单的 Systemtap 模块 我得到了错误 Error inserting module '/sdcard/systemtap/modules/mon
我想知道如何在 systemtap 中添加对用户空间应用程序的支持。当我尝试跟踪任何用户空间程序时,它显示 CONFIG_UTRACE 未设置。 最佳答案 也许您的内核中没有设置 utrace 工具。
我正在尝试执行一个 systemtap 脚本。但是在执行过程中我遇到了以下语义错误。 stap -v -g netfilter.stp Pass 1: parsed user script and 9
我正在尝试找出这些写入我的闪存驱动器的原因。 deathstar> while true > do > dmesg|grep sdc|grep WRITE > sleep 3 > done [1796
我正在考虑使用 SystemTap 来监控生产服务器上的文件系统事件。 如何将数据从 SystemTap 生成的内核模块传输到另一个应用程序?我只看到 printf 作为从 SystemTap 脚本输
我有一个简单的 ST 脚本,它计算每个文件的进程 io 大小: global fds, counts probe syscall.open.return { if ( ( pid()
我想使用 systemtap 来提取我的 linux 生产服务器的详细信息。我的 systemtap 脚本是 global bt; global quit = 0 probe begin {
我想编写一个 SystemTap 脚本,它可以确定探测调用中当前 PID 的实际线程数。此时该数字应与/proc/4711/status 输出中显示的数字相同。 我的第一个方法是计算 kprocess
我正在尝试使用 systemtap 调试内核中的一些代码。我需要在该函数中打印局部变量的值,但看起来 systemtap 只能看到函数参数,而看不到该函数中定义的局部变量。这是我的探测脚本。 prob
我正在尝试创建硬链接(hard link),直接从 Systemtap 嵌入式 C 代码调用 sys_link。基本上,代码如下所示: function sys_link:long(oldname,
我正在寻找一些关于 systemtap 对性能影响的真实信息。我知道静态内核探测记录在他们网站的某处(带有统计信息),但是用户空间探测呢? 我在他们的邮件列表 (http://sourceware.o
我的系统是 Ubuntu,uname -r = 4.15.0-23-generic。我已经为内核安装了调试符号。 我的问题是: I am trying to use socket(AF_PACKET,
我想使用 systemtap 从远程访问中提取我的 linux 生产服务器的详细信息。对此,我有一些疑问: linux生产服务器和linux开发服务器是否有必要使用相同的内核。如果没有,那么如何添加对
我正在尝试运行此脚本,但它显示没有 tcp 连接有什么想法吗?操作系统:centos 6.3 #! /usr/bin/env stap probe begin { printf("%6s %16s
我想用 SystemTap 分析内核模块的缓存行为(#cache 引用、#cache 未命中等)。有一个在线示例脚本,展示了如何使用 SystemTap 读取性能事件和计数器,包括与缓存相关的事件和计
我的目标是分析内核模块中每个函数的执行时间。使用我在网上看到的示例脚本,我想出了以下脚本来满足我的需要。但偶尔我会得到计算延迟的负值。虽然,它们很少发生,但我想这表明我的脚本有问题。谁能帮我解决这个问
我是一名优秀的程序员,十分优秀!