| '\" t |
| .\" Manual page created with latex2man on Thu Aug 16 09:44:45 MDT 2007 |
| .\" NOTE: This file is generated, DO NOT EDIT. |
| .de Vb |
| .ft CW |
| .nf |
| .. |
| .de Ve |
| .ft R |
| |
| .fi |
| .. |
| .TH "UNW\\_GET\\_PROC\\_INFO\\_BY\\_IP" "3" "16 August 2007" "Programming Library " "Programming Library " |
| .SH NAME |
| unw_get_proc_info_by_ip |
| \-\- get procedure info by IP |
| .PP |
| .SH SYNOPSIS |
| |
| .PP |
| #include <libunwind.h> |
| .br |
| .PP |
| int |
| unw_get_proc_info_by_ip(unw_addr_space_t as, |
| unw_word_t ip, |
| unw_proc_info_t *pip, |
| void *arg); |
| .br |
| .PP |
| .SH DESCRIPTION |
| |
| .PP |
| 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(). |
| .PP |
| The routine expects the followins 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. |
| .PP |
| 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 alwas 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. |
| .PP |
| .SH RETURN VALUE |
| |
| .PP |
| On successful completion, unw_get_proc_info_by_ip() |
| returns 0. Otherwise the negative value of one of the error\-codes |
| below is returned. |
| .PP |
| .SH THREAD AND SIGNAL SAFETY |
| |
| .PP |
| unw_get_proc_info() |
| is thread\-safe. If the local |
| address\-space is passed in argument as, |
| this routine is also |
| safe to use from a signal handler. |
| .PP |
| .SH ERRORS |
| |
| .PP |
| .TP |
| UNW_EUNSPEC |
| An unspecified error occurred. |
| .TP |
| UNW_ENOINFO |
| Libunwind |
| was unable to locate |
| unwind\-info for the procedure. |
| .TP |
| UNW_EBADVERSION |
| The unwind\-info for the procedure has |
| version or format that is not understood by libunwind\&. |
| .PP |
| In addition, unw_get_proc_info() |
| may return any error |
| returned by the access_mem() |
| call\-back (see |
| unw_create_addr_space(3)). |
| .PP |
| .SH SEE ALSO |
| |
| .PP |
| libunwind(3), |
| unw_create_addr_space(3), |
| unw_get_proc_name(3), |
| unw_get_proc_info(3), |
| unw_init_remote(3) |
| .PP |
| .SH AUTHOR |
| |
| .PP |
| David Mosberger\-Tang |
| .br |
| Email: \fBdmosberger@gmail.com\fP |
| .br |
| WWW: \fBhttp://www.nongnu.org/libunwind/\fP\&. |
| .\" NOTE: This file is generated, DO NOT EDIT. |