이 콘텐츠는 선택한 언어로 제공되지 않습니다.
Chapter 5. Understanding SystemTap Errors
[man warning::example1] [man error::example2]
warning::example1
and error::example2
which provides explanatory information specific to that diagnostic.
5.1. Parse and Semantic Errors
The script contains a grammatical/typographical error. SystemTap detected type of construct that is incorrect, given the context of the probe.
probe vfs.read probe vfs.write
probe
keyword in column 1 of line 2:
parse error: expected one of '. , ( ? ! { = +=' saw: keyword at perror.stp:2:1 1 parse error(s).
The script contains unsafe embedded C code (blocks of code surrounded by %{
%}
. SystemTap allows you to embed C code in a script, which is useful if there are no tapsets to suit your purposes. However, embedded C constructs are not safe; as such, SystemTap warns you with this error if such constructs appear in the script.
stapdev
group (or have root privileges), run the script in guru mode by using the -g
option:
stap -g script
The ident
function in the script used the wrong type (%s
or %d
). This error presents itself in Example 5.1, “error-variable.stp”. Because the execname()
function returns a string, the format specifier should be %s
, not %d
.
Example 5.1. error-variable.stp
probe syscall.open { printf ("%d(%d) open\n", execname(), pid()) }
The identifier (a variable, for example) was used, but no type (integer or string) could be determined. This occurs, for instance, if you use a variable in a printf
statement while the script never assigns a value to the variable.
SystemTap could not assign a value to a variable or to a location in an array. The destination for the assignment is not a valid destination. The following example code would generate this error:
probe begin { printf("x") = 1 }
A function call or array index expression in the script used an invalid number of arguments/parameters. In SystemTap arity can either see the number of indices for an array, or the number of parameters to a function.
The script used an array operation without declaring the array as a global variable (global variables can be declared after their use in SystemTap scripts). Similar messages appear if an array is used, but with inconsistent arities.
The var
array is being modifed (being assigned to or deleted from) within an active foreach
loop. This error also displays if an operation within the script performs a function call within the foreach
loop.
SystemTap did not understand what the event or SystemTap function pnt
refers to. This usually means that SystemTap could not find a match for pnt
in the tapset library. The N refers to the line and column of the error.
The pnt
events and handler function could not be resolved for a variety of reasons. This error occurs when the script contains the kernel.function("name")
event, and name does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source-line number.
A handler in the script references a target variable, but the value of the variable could not be resolved. This error could also mean that a handler is referencing a target variable that is not valid in the context when it was referenced. This may be a result of compiler optimization of the generated code.
There was a problem processing the debugging information. In most cases, this error results from the installation of a kernel-debuginfo package. The installed kernel-debuginfo package itself may have some consistency or correctness problems.
SystemTap could not find a suitable kernel-debuginfo at all.