Blame


1 058b0118 2005-01-03 devnull .TH MACH-CMD 3
2 058b0118 2005-01-03 devnull .SH NAME
3 058b0118 2005-01-03 devnull attachargs, attachcore, attachdynamic, attachproc, proctextfile \- debugging processes and core files
4 058b0118 2005-01-03 devnull .SH SYNOPSIS
5 058b0118 2005-01-03 devnull .B #include <u.h>
6 058b0118 2005-01-03 devnull .br
7 058b0118 2005-01-03 devnull .B #include <libc.h>
8 058b0118 2005-01-03 devnull .br
9 058b0118 2005-01-03 devnull .B #include <mach.h>
10 058b0118 2005-01-03 devnull .PP
11 058b0118 2005-01-03 devnull .ta +\w'\fLextern 'u +\w'\fLchar *'u
12 058b0118 2005-01-03 devnull .B
13 058b0118 2005-01-03 devnull int attachcore(Fhdr *hdr)
14 058b0118 2005-01-03 devnull .PP
15 058b0118 2005-01-03 devnull .B
16 058b0118 2005-01-03 devnull int attachproc(int pid)
17 058b0118 2005-01-03 devnull .PP
18 058b0118 2005-01-03 devnull .B
19 058b0118 2005-01-03 devnull int attachdynamic(void)
20 058b0118 2005-01-03 devnull .PP
21 058b0118 2005-01-03 devnull .B
22 058b0118 2005-01-03 devnull char* proctextfile(int pid)
23 058b0118 2005-01-03 devnull .PP
24 058b0118 2005-01-03 devnull .B
25 058b0118 2005-01-03 devnull int attachargs(int argc, char **argv, int omode)
26 058b0118 2005-01-03 devnull .PP
27 058b0118 2005-01-03 devnull .B
28 058b0118 2005-01-03 devnull .nf
29 058b0118 2005-01-03 devnull extern Fhdr* symhdr;
30 058b0118 2005-01-03 devnull extern char* symfil;
31 058b0118 2005-01-03 devnull extern Map* symmap;
32 058b0118 2005-01-03 devnull extern Fhdr* fhdrlist;
33 058b0118 2005-01-03 devnull .ift .sp .5
34 058b0118 2005-01-03 devnull .ifn .sp
35 058b0118 2005-01-03 devnull extern Fhdr* corhdr;
36 058b0118 2005-01-03 devnull extern char* corfil;
37 058b0118 2005-01-03 devnull extern Map* cormap;
38 058b0118 2005-01-03 devnull .ift .sp .5
39 058b0118 2005-01-03 devnull .ifn .sp
40 058b0118 2005-01-03 devnull extern int corpid;
41 058b0118 2005-01-03 devnull extern Regs* correg;
42 058b0118 2005-01-03 devnull .SH DESCRIPTION
43 058b0118 2005-01-03 devnull These routines provide access to the objects
44 058b0118 2005-01-03 devnull a typical debugger manipulates: an executable binary,
45 058b0118 2005-01-03 devnull some number of shared libraries, a memory image
46 058b0118 2005-01-03 devnull in the form of a core dump or active process,
47 058b0118 2005-01-03 devnull and a register set.
48 058b0118 2005-01-03 devnull .PP
49 058b0118 2005-01-03 devnull The maintained state is:
50 058b0118 2005-01-03 devnull .TP
51 058b0118 2005-01-03 devnull .I symhdr
52 058b0118 2005-01-03 devnull The file header for the main binary.
53 058b0118 2005-01-03 devnull .TP
54 058b0118 2005-01-03 devnull .I symfil
55 058b0118 2005-01-03 devnull The file name of the main binary.
56 058b0118 2005-01-03 devnull .TP
57 058b0118 2005-01-03 devnull .I symmap
58 058b0118 2005-01-03 devnull The memory map of the main binary.
59 058b0118 2005-01-03 devnull .TP
60 058b0118 2005-01-03 devnull .I fhdrlist
61 058b0118 2005-01-03 devnull A linked list (via the
62 058b0118 2005-01-03 devnull .B Fhdr.next
63 058b0118 2005-01-03 devnull fields) of all currently open headers
64 058b0118 2005-01-03 devnull (see
65 058b0118 2005-01-03 devnull .I symopen
66 058b0118 2005-01-03 devnull in
67 d32deab1 2020-08-16 rsc .MR mach-symbol (3) ).
68 058b0118 2005-01-03 devnull When dynamically linked objects have been attached,
69 058b0118 2005-01-03 devnull they are present in this linked list,
70 058b0118 2005-01-03 devnull and therefore included in searches by
71 058b0118 2005-01-03 devnull .IR indexsym ,
72 058b0118 2005-01-03 devnull .IR lookupsym ,
73 058b0118 2005-01-03 devnull and
74 058b0118 2005-01-03 devnull .I findsym
75 058b0118 2005-01-03 devnull (see
76 d32deab1 2020-08-16 rsc .MR mach-symbol (3) ).
77 058b0118 2005-01-03 devnull .TP
78 058b0118 2005-01-03 devnull .I corhdr
79 058b0118 2005-01-03 devnull The file header for the core dump, if any.
80 058b0118 2005-01-03 devnull .TP
81 058b0118 2005-01-03 devnull .I corfil
82 058b0118 2005-01-03 devnull The file name of the core dump, if any.
83 058b0118 2005-01-03 devnull .TP
84 058b0118 2005-01-03 devnull .I cormap
85 058b0118 2005-01-03 devnull The memory map of the core dump or attached process.
86 058b0118 2005-01-03 devnull .TP
87 058b0118 2005-01-03 devnull .I corpid
88 058b0118 2005-01-03 devnull The process id of the attached process, if any.
89 058b0118 2005-01-03 devnull .TP
90 058b0118 2005-01-03 devnull .I correg
91 058b0118 2005-01-03 devnull The register set of the core dump or attached process.
92 058b0118 2005-01-03 devnull .PD
93 058b0118 2005-01-03 devnull If these fields are not valid, they are zeroed.
94 058b0118 2005-01-03 devnull .PP
95 058b0118 2005-01-03 devnull .I Attachcore
96 058b0118 2005-01-03 devnull and
97 058b0118 2005-01-03 devnull .I attachproc
98 058b0118 2005-01-03 devnull attach to an opened core file or an executing process.
99 058b0118 2005-01-03 devnull They set
100 058b0118 2005-01-03 devnull .IR corhdr ,
101 058b0118 2005-01-03 devnull .IR corfil ,
102 058b0118 2005-01-03 devnull .IR cormap ,
103 058b0118 2005-01-03 devnull .IR corpid ,
104 058b0118 2005-01-03 devnull and
105 058b0118 2005-01-03 devnull .IR correg .
106 058b0118 2005-01-03 devnull .PP
107 058b0118 2005-01-03 devnull .I Proctextfile
108 058b0118 2005-01-03 devnull returns the name of the main binary for the process with id
109 058b0118 2005-01-03 devnull .IR pid .
110 058b0118 2005-01-03 devnull .PP
111 058b0118 2005-01-03 devnull .I Attachdynamic
112 058b0118 2005-01-03 devnull requires that the memory image already be attached.
113 058b0118 2005-01-03 devnull It reads the dynamic linker's internal run-time data structures
114 058b0118 2005-01-03 devnull and then opens all the dynamic objects that are currently
115 058b0118 2005-01-03 devnull loaded.
116 058b0118 2005-01-03 devnull .PP
117 058b0118 2005-01-03 devnull .I Attachargs
118 058b0118 2005-01-03 devnull uses all of these functions while
119 058b0118 2005-01-03 devnull parsing an argument vector as would be passed to
120 058b0118 2005-01-03 devnull a debugger like
121 d32deab1 2020-08-16 rsc .MR db (1)
122 058b0118 2005-01-03 devnull or
123 d32deab1 2020-08-16 rsc .MR acid (1) .
124 058b0118 2005-01-03 devnull It expects a list of executable files, core dump files, or process ids,
125 058b0118 2005-01-03 devnull given in any order.
126 058b0118 2005-01-03 devnull If extra arguments are given (for example, more than one executable, or both
127 058b0118 2005-01-03 devnull a core dump and a process id), they are ignored and diagnostics are printed to
128 058b0118 2005-01-03 devnull standard error.
129 058b0118 2005-01-03 devnull If arguments are missing (for example, the process id is given without an
130 058b0118 2005-01-03 devnull executable file),
131 058b0118 2005-01-03 devnull .I attachargs
132 058b0118 2005-01-03 devnull fills them in as best it can.
133 058b0118 2005-01-03 devnull .SH SOURCE
134 c3674de4 2005-01-11 devnull .B \*9/src/libmach
135 058b0118 2005-01-03 devnull .SH "SEE ALSO
136 d32deab1 2020-08-16 rsc .MR mach (3) ,
137 d32deab1 2020-08-16 rsc .MR mach-file (3) ,
138 d32deab1 2020-08-16 rsc .MR mach-map (3)
139 058b0118 2005-01-03 devnull .SH BUGS
140 058b0118 2005-01-03 devnull The interface needs to be changed to support
141 058b0118 2005-01-03 devnull multiple threads, each with its own register set.