xref: /illumos-gate/usr/src/man/man3proc/Pgrab_core.3proc (revision ed093b41a93e8563e6e1e5dae0768dda2a7bcc27)
1.\"
2.\" This file and its contents are supplied under the terms of the
3.\" Common Development and Distribution License ("CDDL"), version 1.0.
4.\" You may only use this file in accordance with the terms of version
5.\" 1.0 of the CDDL.
6.\"
7.\" A full copy of the text of the CDDL should have accompanied this
8.\" source.  A copy of the CDDL is also available via the Internet at
9.\" http://www.illumos.org/license/CDDL.
10.\"
11.\"
12.\" Copyright 2015 Joyent, Inc.
13.\"
14.Dd May 11, 2016
15.Dt PGRAB_CORE 3PROC
16.Os
17.Sh NAME
18.Nm Pgrab_core ,
19.Nm Pfgrab_core
20.Nd grab a core file
21.Sh LIBRARY
22.Lb libproc
23.Sh SYNOPSIS
24.In libproc.h
25.Ft "struct ps_prochandle *"
26.Fo Pgrab_core
27.Fa "const char *core"
28.Fa "const char *aout"
29.Fa "int gflag"
30.Fa "int *perr"
31.Fc
32.Ft "struct ps_prochandle *"
33.Fo Pfgrab_core
34.Fa "int core_fd"
35.Fa "const char *aout"
36.Fa "int *perr"
37.Fc
38.Sh DESCRIPTION
39The
40.Fn Pgrab_core
41and
42.Fn Pfgrab_core
43functions open a core file for introspection.
44Unlike live processes, core files cannot have their state modified;
45however, all of the functions that iterate or query state will work.
46These functions work on all illumos core files and the core files of some other
47operating systems.
48See both
49.Xr core 5
50and the
51.Em Core Files
52section of
53.Xr libproc 3LIB
54for more information.
55.Pp
56The
57.Fn Pgrab_core
58function attempts to open the core file specified by
59.Fa core .
60The system attempts to determine the path of the original executable.
61The argument
62.Fa aout
63may either be the path to that file, a path to a directory to search, or the
64.Dv NULL
65pointer, if neither is known.
66The system will search for it and will supplement information in the core file
67with that.
68.Pp
69The
70.Fa gflag
71argument to the
72.Fn Pgrab_core
73function controls how the file is opened.
74If the
75.Dv PGRAB_RDONLY
76flag is specified, then the core file will be opened with the
77.Xr open 2
78flag
79.Dv O_RDONLY .
80Otherwise, it will be opened
81.Dv O_RDWR .
82.Pp
83The
84.Fa perr
85argument must be a
86.Pf non- Dv NULL
87pointer which will store a more detailed error in the event that the
88.Fn Pgrab_core
89function fails.
90A human-readable form of the error can be obtained through the routine
91.Xr Pgrab_error 3PROC .
92.Pp
93The
94.Fn Pfgrab_core
95is similar to the
96.Fn Pgrab_core
97function.
98Except, instead of operating on a path, it opens a handle to the core file
99referenced by
100.Fa core_fd .
101The
102.Fa aout
103and
104.Fa perr
105arguments are identical to those in the
106.Fn Pgrab_core
107function.
108.Pp
109The handle returned, from either function, is valid until it is closed
110with
111.Xr Prelease 3PROC
112or
113.Xr Pfree 3PROC .
114.Sh RETURN VALUES
115Upon successful completion, the
116.Fn Pgrab_core
117and
118.Fn Pfgrab_core
119functions return a
120.Sy libproc
121handle to the core file.
122Otherwise,
123.Dv NULL
124is returned and
125.Fa perr
126is filled in with a more detailed error message.
127.Sh ERRORS
128The
129.Fn Pgrab_core
130function will fail if:
131.Bl -tag -width Er
132.It Er G_NOCORE
133The file
134.Fa core
135does not exist.
136.It Er G_STRANGE
137An unexpected system error occurred while trying to open
138.Fa core .
139The value of
140.Sy errno
141indicates the system failure.
142.El
143.Pp
144The
145.Fn Pgrab_core
146and
147.Fn Pfgrab_core
148functions will fail if:
149.Bl -tag -width Er
150.It Dv G_ELF
151An unexpected
152.Xr libelf 3LIB
153failure occurred.
154.It Dv G_FORMAT
155The core file referred to by either
156.Fa core
157or
158.Fa core_fd
159is not a valid ELF core file.
160.It Dv G_ISAINVAL
161The architecture of the core file referred to by either
162.Fa core
163or
164.Fa core_fd
165does not match the current running system.
166.It Dv G_LP64
167The calling process is a 32-bit process and the core file referenced by
168either
169.Fa core
170or
171.Fa core_fd
172refers to a 64-bit process.
173.It Dv G_NOTE
174The ELF notes present in the core file referred to by either
175.Fa core
176or
177.Fa core_fd
178are corrupt or missing required data.
179.It Dv G_STRANGE
180An unanticipated system error occurred while trying to open the core
181file and create the handle.
182The value of
183.Sy errno
184indicates the system failure.
185.El
186.Sh INTERFACE STABILITY
187.Sy Uncommitted
188.Sh MT-LEVEL
189.Sy MT-Safe
190.Sh SEE ALSO
191.Xr gcore 1 ,
192.Xr open 2 ,
193.Xr errno 3C ,
194.Xr libproc 3LIB ,
195.Xr Pfree 3PROC ,
196.Xr Pgrab_error 3PROC ,
197.Xr Prelease 3PROC ,
198.Xr core 5
199