|  | .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 | 
|  | .IR 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 | 
|  | .IR 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 | 
|  | .IR db (1) | 
|  | or | 
|  | .IR 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 | 
|  | .IR mach (3), | 
|  | .IR mach-file (3), | 
|  | .IR mach-map (3) | 
|  | .SH BUGS | 
|  | The interface needs to be changed to support | 
|  | multiple threads, each with its own register set. |