FreeBSD manual
download PDF document: unw_get_proc_info_by_ip.3libunwind.pdf
UNW_GET_PROC_INFO_BY_IP(3libunwind) Programming Library
NAME
unw_get_proc_info_by_ip -- get procedure info by IP
SYNOPSIS
#include <libunwind.h>
int unw_get_proc_info_by_ip(unw_addr_space_t as, unw_word_t ip,
unw_proc_info_t *pip, void *arg);
DESCRIPTION
The unw_get_proc_info_by_ip() routine returns the same kind of
auxiliary information about a procedure as unw_get_proc_info(), except
that the info is looked up by instruction-pointer (IP) instead of a
cursor. This is more flexible because it is possible to look up the
info for an arbitrary procedure, even if it is not part of the current
call chain. However, since it is more flexible, it also tends to run
slower (and often much slower) than unw_get_proc_info().
The routine expects the following arguments: as is the address-space in
which the instruction pointer should be looked up. For a look-up in
the local address-space, unw_local_addr_space can be passed for this
argument. Argument ip is the instruction-pointer for which the
procedure info should be looked up and pip is a pointer to a structure
of type unw_proc_info_t which is used to return the info. Lastly, arg
is the address space argument that should be used when accessing the
address space. It has the same purpose as the argument of the same name
for unw_init_remote(). When accessing the local address space (first
argument is unw_local_addr_space), NULL must be passed for this
argument.
Note that for the purposes of libunwind, the code of a procedure is
assumed to occupy a single, contiguous range of addresses. For this
reason, it is always possible to describe the extent of a procedure
with the start_ip and end_ip members. If a single function/routine is
split into multiple, discontiguous pieces, libunwind will treat each
piece as a separate procedure.
RETURN VALUE
On successful completion, unw_get_proc_info_by_ip() returns 0.
Otherwise the negative value of one of the error-codes below is
returned.
THREAD AND SIGNAL SAFETY
unw_get_proc_info_by_ip() is thread safe. If the local address space is
passed in argument as, this routine is also safe to use from a signal
handler.
ERRORS
UNW_EUNSPEC
An unspecified error occurred.
UNW_ENOINFO
Libunwind was unable to locate unwind-info for the procedure.
UNW_EBADVERSION
The unwind-info for the procedure has version or format that is
not understood by libunwind.
unw_init_remote(3libunwind)
AUTHOR
David Mosberger-Tang
Email: dmosberger@gmail.com
WWW: http://www.nongnu.org/libunwind/.
Programming Library 29 August 2023
UNW_GET_PROC_INFO_BY_IP(3libunwind)