mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
d32deab17b
Suggested by G. Brandon Robinson.
141 lines
2.9 KiB
Groff
141 lines
2.9 KiB
Groff
.TH MACH-CMD 3
|
|
.SH NAME
|
|
attachargs, attachcore, attachdynamic, attachproc, proctextfile \- debugging processes and core files
|
|
.SH SYNOPSIS
|
|
.B #include <u.h>
|
|
.br
|
|
.B #include <libc.h>
|
|
.br
|
|
.B #include <mach.h>
|
|
.PP
|
|
.ta +\w'\fLextern 'u +\w'\fLchar *'u
|
|
.B
|
|
int attachcore(Fhdr *hdr)
|
|
.PP
|
|
.B
|
|
int attachproc(int pid)
|
|
.PP
|
|
.B
|
|
int attachdynamic(void)
|
|
.PP
|
|
.B
|
|
char* proctextfile(int pid)
|
|
.PP
|
|
.B
|
|
int attachargs(int argc, char **argv, int omode)
|
|
.PP
|
|
.B
|
|
.nf
|
|
extern Fhdr* symhdr;
|
|
extern char* symfil;
|
|
extern Map* symmap;
|
|
extern Fhdr* fhdrlist;
|
|
.ift .sp .5
|
|
.ifn .sp
|
|
extern Fhdr* corhdr;
|
|
extern char* corfil;
|
|
extern Map* cormap;
|
|
.ift .sp .5
|
|
.ifn .sp
|
|
extern int corpid;
|
|
extern Regs* correg;
|
|
.SH DESCRIPTION
|
|
These routines provide access to the objects
|
|
a typical debugger manipulates: an executable binary,
|
|
some number of shared libraries, a memory image
|
|
in the form of a core dump or active process,
|
|
and a register set.
|
|
.PP
|
|
The maintained state is:
|
|
.TP
|
|
.I symhdr
|
|
The file header for the main binary.
|
|
.TP
|
|
.I symfil
|
|
The file name of the main binary.
|
|
.TP
|
|
.I symmap
|
|
The memory map of the main binary.
|
|
.TP
|
|
.I fhdrlist
|
|
A linked list (via the
|
|
.B Fhdr.next
|
|
fields) of all currently open headers
|
|
(see
|
|
.I symopen
|
|
in
|
|
.MR mach-symbol (3) ).
|
|
When dynamically linked objects have been attached,
|
|
they are present in this linked list,
|
|
and therefore included in searches by
|
|
.IR indexsym ,
|
|
.IR lookupsym ,
|
|
and
|
|
.I findsym
|
|
(see
|
|
.MR mach-symbol (3) ).
|
|
.TP
|
|
.I corhdr
|
|
The file header for the core dump, if any.
|
|
.TP
|
|
.I corfil
|
|
The file name of the core dump, if any.
|
|
.TP
|
|
.I cormap
|
|
The memory map of the core dump or attached process.
|
|
.TP
|
|
.I corpid
|
|
The process id of the attached process, if any.
|
|
.TP
|
|
.I correg
|
|
The register set of the core dump or attached process.
|
|
.PD
|
|
If these fields are not valid, they are zeroed.
|
|
.PP
|
|
.I Attachcore
|
|
and
|
|
.I attachproc
|
|
attach to an opened core file or an executing process.
|
|
They set
|
|
.IR corhdr ,
|
|
.IR corfil ,
|
|
.IR cormap ,
|
|
.IR corpid ,
|
|
and
|
|
.IR correg .
|
|
.PP
|
|
.I Proctextfile
|
|
returns the name of the main binary for the process with id
|
|
.IR pid .
|
|
.PP
|
|
.I Attachdynamic
|
|
requires that the memory image already be attached.
|
|
It reads the dynamic linker's internal run-time data structures
|
|
and then opens all the dynamic objects that are currently
|
|
loaded.
|
|
.PP
|
|
.I Attachargs
|
|
uses all of these functions while
|
|
parsing an argument vector as would be passed to
|
|
a debugger like
|
|
.MR db (1)
|
|
or
|
|
.MR acid (1) .
|
|
It expects a list of executable files, core dump files, or process ids,
|
|
given in any order.
|
|
If extra arguments are given (for example, more than one executable, or both
|
|
a core dump and a process id), they are ignored and diagnostics are printed to
|
|
standard error.
|
|
If arguments are missing (for example, the process id is given without an
|
|
executable file),
|
|
.I attachargs
|
|
fills them in as best it can.
|
|
.SH SOURCE
|
|
.B \*9/src/libmach
|
|
.SH "SEE ALSO
|
|
.MR mach (3) ,
|
|
.MR mach-file (3) ,
|
|
.MR mach-map (3)
|
|
.SH BUGS
|
|
The interface needs to be changed to support
|
|
multiple threads, each with its own register set.
|