Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

error::sdt(7stap) [centos man page]

ERROR::SDT(7stap)														 ERROR::SDT(7stap)

NAME
error::sdt - <sys/sdt.h> marker failures DESCRIPTION
Systemtap's <sys/sdt.h> probes are modeled after the dtrace USDT API, but are implemented differently. They leave a only a NOP instruction in the userspace program's text segment, and add an ELF note to the binary with metadata. This metadata describes the marker's name and parameters. This encoding is designed to be parseable by multiple tools (not just systemtap: GDB, the GNU Debugger, also contains sup- port). These allow the tools to find parameters and their types, wherever they happen to reside, even without DWARF debuginfo. The reason finding parameters is tricky is because the STAP_PROBE / DTRACE_PROBE markers store an assembly language expression for each op- erand, as a result of use of gcc inline-assembly directives. The compiler is given a broad gcc operand constraint string ("nor") for the operands, which usually works well. Usually, it does not force the compiler to load the parameters into or out of registers, which would slow down an instrumented program. However, some instrumentation sites with some parameters do not work well with the default "nor" con- straint. unresolveable at run-time GCC may emit strings that an assembler could resolve (from the context of compiling the original program), but a run-time tool can- not. For example, the operand string might refer to a label of a local symbol that is not emitted into the ELF object file at all, which leaves no trace for the run-time. Reference to such parameters from within systemtap can result in "SDT asm not understood" errors. too complicated expression GCC might synthesize very complicated assembly addressing modes from complex C data types / pointer expressions. systemtap or gdb may not be able to parse some valid but complicated expressions. Reference to such parameters from within systemtap can result in "SDT asm not understood" errors. overly restrictive constraint GCC might not be able to even compile the original program with the default "nor" constraint due to shortage of registers or other reasons. A compile-time gcc error such as "asm operand has impossible constraints" may result. There are two general workarounds to this family of problems. change the constraints While compiling the original instrumented program, set the STAP_SDT_ARG_CONSTRAINT macro to different constraint strings. See the GCC manual about various options. For example, on many machine architectures, "r" forces operands into registers, and "g" leaves operands essentially unconstrained. revert to debuginfo As long as the instrumented program compiles, it may be fine simply to keep using <sys/sdt.h> but eschew extraction of a few indi- vidual parameters. In the worst case, disable <sys/sdt.h> macros entirely to eschew the compiled-in instrumentation. If DWARF debuginfo was generated and preserved, a systemtap script could refer to the underlying source context variables instead of the positional STAP_PROBE parameters. SEE ALSO
stap(1), stapprobes(3stap), error::dwarf(7stap), http://gcc.gnu.org/onlinedocs/gcc/Constraints.html, http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation, error::reporting(7stap) ERROR::SDT(7stap)

Check Out this Related Man Page

STAP(7) 						 Miscellaneous Information Manual						   STAP(7)

NAME
stappaths - systemtap configurable file paths DESCRIPTION
This manual page was generated on 2014-06-09 for systemtap 2.4. The following section will list the main paths in systemtap that are important to know and may be required to reference. /usr/share/systemtap/tapset/ The directory for the standard probe-alias / function tapset library, unless overridden by the SYSTEMTAP_TAPSET environment variable or the XDG_DATA_DIRS environment variable. These are described in the stapprobes(3stap), probe::*(3stap), and function::*(3stap) manual pages. /usr/share/systemtap/runtime/ The runtime sources, unless overridden by the SYSTEMTAP_RUNTIME environment variable. /usr/bin/staprun The auxiliary program supervising module loading, interaction, and unloading. /usr/libexec/systemtap/stapio The auxiliary program for module input and output handling. /usr/include/sys/sdt.h Location of the <sys/sdt.h> headers. Kernel debuginfo Path: /usr/lib/debug/lib/modules/$(uname -r)/ The location of kernel debugging information when packaged into the kernel-debuginfo RPM, unless overridden by the SYSTEMTAP_DEBUG- INFO_PATH environment variable. The default value for this variable is +:.debug:/usr/lib/debug:build. elfutils searches vmlinux in this path and it interprets the path as a base directory of which various subdirectories will be searched for finding debuginfo for the kernel, kernel modules, and user-space binaries. By default, systemtap will also look for vmlinux in these locations: /boot/vmlinux-`uname -r` /lib/modules/`uname -r`/vmlinux /lib/modules/`uname -r`/vmlinux.debug /lib/modules/`uname -r`/build/vmlinux /lib/modules/`uname -r`/.debug/vmlinux.debug /usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug /var/cache/abrt-di/usr/debug/lib/modules/`uname -r`/ /var/cache/abrt-di/usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug Corresponding source files are usually located under /usr/src/debug/. Further file information on user-space applications can be determined per-basis using rpm -ql <package>-debuginfo. For supported user-space applications information please visit the systemtap wiki. $HOME/.systemtap Systemtap data directory for cached systemtap files, unless overridden by the SYSTEMTAP_DIR environment variable. /tmp/stapXXXXXX Temporary directory for systemtap files, including translated C code and kernel object. /lib/modules/VERSION/build The location of kernel module building infrastructure. /usr/share/doc/systemtap*/examples Examples with greater detail can be found here. Each example comes with a .txt or .meta file explaining what the example, sample or demo does and how it is ordinarily run. $SYSTEMTAP_DIR/ssl/server User's server-side SSL certificate database. If SYSTEMTAP_DIR is not set, the default is $HOME/.systemtap. $SYSTEMTAP_DIR/ssl/client User's private client-side SSL certificate database. If SYSTEMTAP_DIR is not set, the default is $HOME/.systemtap. /etc/systemtap/ssl/client Global client-side SSL certificate database. /etc/systemtap/staprun/ staprun's trusted signer certificate database. /etc/sysconfig/stap-server/ stap-server service global configuration file. /etc/stap-server/conf.d/*.conf stap-server service configuration files for default servers. /var/run/stap-server/ stap-server service default location of status files for running servers. /var/log/stap-server/log stap-server service default log file. FILES
/usr/share/systemtap/tapset SEE ALSO
stapprobes(3stap), staprun(8), stapvars(3stap), stapex(3stap), stap-server(8), awk(1), gdb(1) BUGS
Use the Bugzilla link of the project web page or our mailing list. http://sourceware.org/systemtap/,<systemtap@sourceware.org>. Systemtap Team STAP(7)
Man Page