Я пытаюсь сбросить переменную из зонда системного вызова в сценарии systemtap:
probe syscall.execve
{
printf("ARGS: %s\n", argstr)
print($envp)
print("\n")
}
После запуска такой программы под systemtap
sudo stap -vv -W script.stp -c ./run.sh -o log.txt
Я получаю что-то похожее на следующее (в log.txt
):
ARGS: "some-binary-name", ["arg1", "arg2"], [/* 6 vars */]
140089557153664
К сожалению, строка [/* 6 vars */]
— это буквально то, что я получаю в журнале, а не фактическое содержимое $envp
. И когда я пытаюсь вывести $envp
с помощью print
, я получаю какое-то числовое значение (вероятно, адрес массива) вместо элементов массива.
Как выгрузить фактические строки, которые хранятся в $envp
?