Systemtap se refiere a una versión simplificada de la artesanía de los archivos de encabezado personalizados

Primero mire el artículo anterior:
https://blog.csdn.net/dog250/article/details/108230157 ¿
No es lo suficientemente simple?

Eso es porque mi nivel no es suficiente. De hecho, stap puede llamar directamente al sistema para ejecutar comandos externos, por lo que no es necesario ingresar al modo guru para stap.

El guión es el siguiente:

#!/usr/local/bin/stap
// selftap
probe process("/usr/local/bin/stap").function("make_any_make_cmd")
{
    
    
	ext = "\'EXTRA_CFLAGS += -I$(STAP_INCLUDE)\'";
	file = sprintf("%s/Makefile", user_string($dir->_M_local_buf));
	cmd = sprintf("/usr/bin/echo %s \>>%s", ext, file);
	// 有system命令干嘛还在内核空间写文件...
	system(cmd);
}

Suficientemente simple. Ven y mira el efecto:

[root@localhost test]# cat aa.stp
#!/usr/local/bin/stap -g

%{
    
    
#include "common.h"
%}

function func(who:long)
%{
    
    
	STAP_PRINTF("%d   %lu\n", VAR, STAP_ARG_who);
%}

probe begin
{
    
    
	func($1);
	exit();
}
[root@localhost test]# /usr/local/bin/stap -g ./aa.stp 191
/tmp/stapKTguZf/stap_7a62a2c6930488205b2f13dbba9d80c5_1310_src.c:29:20: 致命错误:common.h:没有那个文件或目录
 #include "common.h"
                    ^
编译中断。
make[1]: *** [/tmp/stapKTguZf/stap_7a62a2c6930488205b2f13dbba9d80c5_1310_src.o] 错误 1
make: *** [_module_/tmp/stapKTguZf] 错误 2
WARNING: kbuild exited with status: 2
Pass 4: compilation failed.  [man error::pass4]
[root@localhost test]# ./selftap -c  '/usr/local/bin/stap -g ./aa.stp 191'
100   191
[root@localhost test]#

Por cierto, de hecho, el cmd en mi script está un poco codificado. El enfoque correcto debería ser:

file = sprintf("%s/Makefile", user_string($dir->_M_local_buf));
cmd = sprintf("./mycmd %s", file);

Solo necesito pasar la ruta completa del Makefile, y puedo escribir más cosas en el Makefile, como agregar otro obj-m + = XXX.o

Bueno, esto es mejor.


Los zapatos de cuero en Wenzhou, Zhejiang están mojados, por lo que no engordan con la lluvia.

Supongo que te gusta

Origin blog.csdn.net/dog250/article/details/108234728
Recomendado
Clasificación