groff 1.23.0 added .MR to its -man macro package. The NEWS file states
that the inclusion of the macro "was prompted by its introduction to
Plan 9 from User Space's troff in August 2020." From d32deab it seems
that the name for Plan 9 from User Space's implementation was suggested
by groff maintainer G. Brandon Robinson.
Not sure if the intention was to make these definitions compatible, but
it would be nice if they were.
Currently, Plan 9 from User Space's .MR expects its second argument to
be parenthesized. groff's .MR does not. This results in extra
parentheses appearing in manual references when viewing Plan 9 from User
Space's manual pages on a system using groff.
142 lines
2.9 KiB
Groff
142 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.
|