Purpose
Provide access
to facilities needed by the pthread debug library and supplied by
the debugger or application.
Library
pthread debug
library (libpthdebug.a)
Syntax
#include <sys/pthdebug.h>
int alloc (user, len, bufp)
pthdb_user_t user;
size_t len;
void **bufp;
int dealloc (user, buf)
pthdb_user_t user;
void *buf;
int print (user, str)
pthdb_user_t user;
char *str;
int read_data (user, buf, addr, size)
pthdb_user_t user;
void *buf;
pthdb_addr_t addr;
int size;
int read_regs (user, tid, flags, context)
pthdb_user_t user;
tid_t tid;
unsigned long long flags;
struct context64 *context;
int symbol_addrs (user, symbols[],count)
pthdb_user_t user;
pthdb_symbol_t symbols[];
int count;
int write_data (user, buf, addr, size)
pthdb_user_t user;
void *buf;
pthdb_addr_t addr;
int size;
int write_regs (user, tid, flags, context)
pthdb_user_t user;
tid_t tid;
unsigned long long flags;
struct context64 *context;
Description
- int alloc()
- Allocates len bytes of memory and returns the address.
If successful, 0 is returned; otherwise, a nonzero number is returned.
This call back function is always required.
- int dealloc()
- Takes a buffer and frees it. If successful, 0 is returned; otherwise,
a nonzero number is returned. This call back function is always required.
- int print()
- Prints the character string to the debugger's stdout. If successful,
0 is returned; otherwise, a nonzero number is returned. This call
back is for debugging the library only. If you aren't debugging the
pthread debug library, pass a NULL value for this call back.
- int read_data()
- Reads the requested number of bytes of data at the requested location
from an active process or core file and returns the data through a
buffer. If successful, 0 is returned; otherwise, a nonzero number
is returned. This call back function is always required.
- int read_regs()
- Reads the context information of a debuggee kernel thread from
an active process or from a core file. The information should be formatted
in context64 form for both a 32-bit and a 64-bit process. If
successful, 0 is returned; otherwise, a nonzero number is returned.
This function is only required when using the pthdb_pthread_context and pthdb_pthread_setcontext subroutines.
- int symbol_addrs()
- Resolves the address of symbols in the debuggee. The pthread debug
library calls this subroutine to get the address of known debug symbols.
If the symbol has a name of NULL or "", set the address to 0LL instead
of doing a lookup or returning an error. If successful, 0 is returned;
otherwise, a nonzero number is returned. In introspective mode, when
the PTHDB_FLAG_SUSPEND flag is set, the application can use
the pthread debug library by passing NULL, or it can use one of its
own.
- int write_data()
- Writes the requested number of bytes of data to the requested
location. The libpthdebug.a library may use this to write data
to the active process. If successful, 0 is returned; otherwise, a
nonzero number is returned. This call back function is required when
the PTHDB_FLAG_HOLD flag is set and when using the pthdb_pthread_setcontext subroutine.
- int write_regs()
- Writes requested context information to specified debuggee's kernel
thread id. If successful, 0 is returned; otherwise, a nonzero number
is returned. This subroutine is only required when using the pthdb_pthread_setcontext subroutine.
Note: If the write_data and write_regs subroutines
are NULL, the pthread debug library will not try to write data or
regs. If the pthdb_pthread_set_context subroutine is called
when the write_data and write_regs subroutines are NULL, PTHDB_NOTSUP is
returned.
Parameters
Item |
Description |
user |
User handle. |
symbols |
Array of symbols. |
count |
Number of symbols. |
buf |
Buffer. |
addr |
Address to be read from or wrote to. |
size |
Size of the buffer. |
flags |
Session flags, must accept PTHDB_FLAG_GPRS, PTHDB_FLAG_SPRS, PTHDB_FLAG_FPRS,
and PTHDB_FLAG_REGS. |
tid |
Thread id. |
flags |
Flags that control which registers are read or wrote. |
context |
Context structure. |
len |
Length of buffer to be allocated or reallocated. |
bufp |
Pointer to buffer. |
str |
String to be printed. |
Return Values
If successful,
these subroutines return 0; otherwise they return a nonzero value.