Я пытаюсь распечатать данные, полученные в сокете - содержимое ubuf по возврату sys_recv. Я не могу получить спецификатор формата% M для правильной работы. Может кто-нибудь объяснить, как правильно его использовать. БлагодаряФормат Systemtap% M printf возвращает только один символ
stap -L 'kernel.function("[email protected]/socket.c")'
kernel.function("[email protected]/socket.c:1800") $fd:int $ubuf:void* $size:size_t $flags:unsigned int
с помощью этого зонда: [@ Kakitis лари НТКГ] $ кошка раструба recv.stp
#! /usr/bin/env stap
probe kernel.function("[email protected]/socket.c").return {
if (pid() == target())
printf ("%s fd %d size %d ubuf %p %10M \n ", ppfunc(),$fd,$size,$ubuf,$ubuf)
}
Из моего чтения страницы человека формат% 10M должен возвращать 10 байт из место, на который указывает $ ubuf: пустота, но я получаю только 1. Настройка параметра 10 смен выводить один символ, а не показывать более или менее память
[[email protected] stap]# stap -x 16796 socket-recv.stp
sys_recv fd 13 size 64071 ubuf 0x86ceca0 70
sys_recv fd 13 size 62679 ubuf 0x86cf210 50
Изменение 10 до 2 дает этому
[[email protected] stap]# stap -x 16796 socket-recv.stp
sys_recv fd 13 size 64071 ubuf 0x86ceca0 70
sys_recv fd 13 size 62679 ubuf 0x86cf210 50
Системные сведения являются:
[[email protected] stap]$ stap --version
Systemtap translator/driver (version 2.1/0.154, rpm 2.1-2.fc17)
Copyright (C) 2005-2013 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
enabled features: AVAHI LIBRPM LIBSQLITE3 NSS TR1_UNORDERED_MAP NLS
[[email protected] stap]$ uname -a
Linux kakitis 3.4.33 #1 SMP Tue Jan 7 14:15:58 EST 2014 i686 i686 i386 GNU/Linux
[[email protected] stap]$ cat /etc/redhat-release
Fedora release 17 (Beefy Miracle)