Форматирование / печать execve аргументов - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь распечатать окружение из execve вызова.Я фиксирую это через:

syscall::exec*:entry {
  printf("%i %i %s %s\n", ppid, pid, execname, copyinstr(arg0));
}

Но я не могу убедить dtrace, что arg2[0] - это то, что можно напечатать.Как мне получить содержимое envp в этом случае?

1 Ответ

0 голосов
/ 19 декабря 2018

Это должно быть возможно при использовании встроенной переменной curpsinfo , ее pr_envp поле .Но это будет нелегко, так как массив и dtrace не поддерживают циклы.Возможно, вы можете взломать его, используя известный newproc.d скрипт и заменив там curpsinfo-> pr_argv на curpsinfo-> pr_envp , но вы должны сделать что-то с count какну, то есть this-> argc - может быть установить какое-то высокое значение?В любом случае, проверьте ответы и обсуждение этого вопроса на serverfault .Я думаю, что то же самое относится к переменным среды.

...