Next: Registers, Previous: Convenience Vars, Up: Data [Contents][Index]
GDB also supplies some convenience functions. These have a syntax similar to convenience variables. A convenience function can be used in an expression just like an ordinary function; however, a convenience function is implemented internally to GDB.
These functions do not require GDB to be configured with
Python support, which means that they are always available.
$_isvoid (expr)Return one if the expression expr is void. Otherwise it
returns zero.
A void expression is an expression where the type of the result
is void. For example, you can examine a convenience variable
(see Convenience Variables) to check whether
it is void:
(gdb) print $_exitcode $1 = void (gdb) print $_isvoid ($_exitcode) $2 = 1 (gdb) run Starting program: ./a.out [Inferior 1 (process 29572) exited normally] (gdb) print $_exitcode $3 = 0 (gdb) print $_isvoid ($_exitcode) $4 = 0
In the example above, we used $_isvoid to check whether
$_exitcode is void before and after the execution of the
program being debugged. Before the execution there is no exit code to
be examined, therefore $_exitcode is void. After the
execution the program being debugged returned zero, therefore
$_exitcode is zero, which means that it is not void
anymore.
The void expression can also be a call of a function from the
program being debugged. For example, given the following function:
void
foo (void)
{
}
The result of calling it inside GDB is void:
(gdb) print foo () $1 = void (gdb) print $_isvoid (foo ()) $2 = 1 (gdb) set $v = foo () (gdb) print $v $3 = void (gdb) print $_isvoid ($v) $4 = 1
These functions require GDB to be configured with
Python support.
$_memeq(buf1, buf2, length)Returns one if the length bytes at the addresses given by buf1 and buf2 are equal. Otherwise it returns zero.
$_regex(str, regex)Returns one if the string str matches the regular expression
regex. Otherwise it returns zero.
The syntax of the regular expression is that specified by Python’s
regular expression support.
$_streq(str1, str2)Returns one if the strings str1 and str2 are equal. Otherwise it returns zero.
$_strlen(str)Returns the length of string str.
$_caller_is(name[, number_of_frames])Returns one if the calling function’s name is equal to name. Otherwise it returns zero.
If the optional argument number_of_frames is provided, it is the number of frames up in the stack to look. The default is 1.
Example:
(gdb) backtrace
#0 bottom_func ()
at testsuite/gdb.python/py-caller-is.c:21
#1 0x00000000004005a0 in middle_func ()
at testsuite/gdb.python/py-caller-is.c:27
#2 0x00000000004005ab in top_func ()
at testsuite/gdb.python/py-caller-is.c:33
#3 0x00000000004005b6 in main ()
at testsuite/gdb.python/py-caller-is.c:39
(gdb) print $_caller_is ("middle_func")
$1 = 1
(gdb) print $_caller_is ("top_func", 2)
$1 = 1
$_caller_matches(regexp[, number_of_frames])Returns one if the calling function’s name matches the regular expression regexp. Otherwise it returns zero.
If the optional argument number_of_frames is provided, it is the number of frames up in the stack to look. The default is 1.
$_any_caller_is(name[, number_of_frames])Returns one if any calling function’s name is equal to name. Otherwise it returns zero.
If the optional argument number_of_frames is provided, it is the number of frames up in the stack to look. The default is 1.
This function differs from $_caller_is in that this function
checks all stack frames from the immediate caller to the frame specified
by number_of_frames, whereas $_caller_is only checks the
frame specified by number_of_frames.
$_any_caller_matches(regexp[, number_of_frames])Returns one if any calling function’s name matches the regular expression regexp. Otherwise it returns zero.
If the optional argument number_of_frames is provided, it is the number of frames up in the stack to look. The default is 1.
This function differs from $_caller_matches in that this function
checks all stack frames from the immediate caller to the frame specified
by number_of_frames, whereas $_caller_matches only checks the
frame specified by number_of_frames.
GDB provides the ability to list and get help on convenience functions.
help functionPrint a list of all convenience functions.
Next: Registers, Previous: Convenience Vars, Up: Data [Contents][Index]