Обновление 2:
buffer = @cast($src, "char");
Должно ли это быть указатель на символ вместо char ?
Обновление 1 : из документов systemtap
семантическая ошибка: неразрешенное выражение целевого символа
цельпеременная упоминалась в обработчике зонда, который не был разрешен.Или целевая переменная вообще недопустима в контексте, таком как функция скрипта.Эта переменная может быть исключена оптимизирующим компилятором или может не иметь подходящего типа, или где-то может быть просто досадная ошибка.Повторите попытку с немного другой зондирующей точкой (используйте оператор () вместо функции ()), чтобы найти более кооперативного соседа в той же области.
Оригинальные сообщения
Концепция переменной как дружественной вещи под названием src существует только в читаемом человеком исходном коде.Посмотри вокруг свой код.Вы еще не объявили переменные с именем src .
Я видел определение функции memcpy в коде ядра Linux, и этот параметр называется src
Да, но еще раз, это все на благо человека.
Часть, которую вам не хватает, заключается в том, что когда исходный код компилируется в приложение, компилятор объединяет все наши человеческие конструкции ипревращает их в смещения стека.
Предупреждение: я полностью игнорирую соглашения о вызовах функций для простоты.
Если вы посмотрите на скомпилированный двоичный файл, для вашей платформы, вы можете увидеть некоторые лучшие советы о том, что вам нужно сделать.Предполагая, что вы работаете в системе x86, вы увидите что-то вроде этого:
memcpy:
push ebp
mov ebp, esp
sub esp, 8
// The function body starts here and you will see references
// to what we recognize as the variable "src" with an instructions like
mov edi, esp+0
// That just loaded the EDI register with a reference to the location of src
Вы можете увидеть сборку для вашей платформы, используя gdb.