<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2015 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Free Software" and "Free Software Needs
Free Documentation", with the Front-Cover Texts being "A GNU Manual,"
and with the Back-Cover Texts as in (a) below.

(a) The FSF's Back-Cover Text is: "You are free to copy and modify
this GNU Manual.  Buying copies from GNU Press supports the FSF in
developing GNU and promoting software freedom." -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: OS Information</title>

<meta name="description" content="Debugging with GDB: OS Information">
<meta name="keywords" content="Debugging with GDB: OS Information">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Data.html#Data" rel="up" title="Data">
<link href="Memory-Region-Attributes.html#Memory-Region-Attributes" rel="next" title="Memory Region Attributes">
<link href="Vector-Unit.html#Vector-Unit" rel="prev" title="Vector Unit">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="OS-Information"></a>
<div class="header">
<p>
Next: <a href="Memory-Region-Attributes.html#Memory-Region-Attributes" accesskey="n" rel="next">Memory Region Attributes</a>, Previous: <a href="Vector-Unit.html#Vector-Unit" accesskey="p" rel="prev">Vector Unit</a>, Up: <a href="Data.html#Data" accesskey="u" rel="up">Data</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Operating-System-Auxiliary-Information"></a>
<h3 class="section">10.16 Operating System Auxiliary Information</h3>
<a name="index-OS-information"></a>

<p><small>GDB</small> provides interfaces to useful OS facilities that can help
you debug your program.
</p>
<a name="index-auxiliary-vector"></a>
<a name="index-vector_002c-auxiliary"></a>
<p>Some operating systems supply an <em>auxiliary vector</em> to programs at
startup.  This is akin to the arguments and environment that you
specify for a program, but contains a system-dependent variety of
binary values that tell system libraries important details about the
hardware, operating system, and process.  Each value&rsquo;s purpose is
identified by an integer tag; the meanings are well-known but system-specific.
Depending on the configuration and operating system facilities,
<small>GDB</small> may be able to show you this information.  For remote
targets, this functionality may further depend on the remote stub&rsquo;s
support of the &lsquo;<samp>qXfer:auxv:read</samp>&rsquo; packet, see
<a href="General-Query-Packets.html#qXfer-auxiliary-vector-read">qXfer auxiliary vector read</a>.
</p>
<dl compact="compact">
<dd><a name="index-info-auxv"></a>
</dd>
<dt><code>info auxv</code></dt>
<dd><p>Display the auxiliary vector of the inferior, which can be either a
live process or a core dump file.  <small>GDB</small> prints each tag value
numerically, and also shows names and text descriptions for recognized
tags.  Some values in the vector are numbers, some bit masks, and some
pointers to strings or other data.  <small>GDB</small> displays each value in the
most appropriate form for a recognized tag, and in hexadecimal for
an unrecognized tag.
</p></dd>
</dl>

<p>On some targets, <small>GDB</small> can access operating system-specific
information and show it to you.  The types of information available
will differ depending on the type of operating system running on the
target.  The mechanism used to fetch the data is described in
<a href="Operating-System-Information.html#Operating-System-Information">Operating System Information</a>.  For remote targets, this
functionality depends on the remote stub&rsquo;s support of the
&lsquo;<samp>qXfer:osdata:read</samp>&rsquo; packet, see <a href="General-Query-Packets.html#qXfer-osdata-read">qXfer osdata read</a>.
</p>
<dl compact="compact">
<dd><a name="index-info-os"></a>
</dd>
<dt><code>info os <var>infotype</var></code></dt>
<dd>
<p>Display OS information of the requested type.
</p>
<p>On <small>GNU</small>/Linux, the following values of <var>infotype</var> are valid:
</p>
<a name="linux-info-os-infotypes"></a><dl compact="compact">
<dd><a name="index-info-os-cpus"></a>
</dd>
<dt><code>cpus</code></dt>
<dd><p>Display the list of all CPUs/cores. For each CPU/core, <small>GDB</small> prints
the available fields from /proc/cpuinfo. For each supported architecture
different fields are available. Two common entries are processor which gives
CPU number and bogomips; a system constant that is calculated during
kernel initialization.
</p>
<a name="index-info-os-files"></a>
</dd>
<dt><code>files</code></dt>
<dd><p>Display the list of open file descriptors on the target.  For each
file descriptor, <small>GDB</small> prints the identifier of the process
owning the descriptor, the command of the owning process, the value
of the descriptor, and the target of the descriptor.
</p>
<a name="index-info-os-modules"></a>
</dd>
<dt><code>modules</code></dt>
<dd><p>Display the list of all loaded kernel modules on the target.  For each
module, <small>GDB</small> prints the module name, the size of the module in
bytes, the number of times the module is used, the dependencies of the
module, the status of the module, and the address of the loaded module
in memory.
</p>
<a name="index-info-os-msg"></a>
</dd>
<dt><code>msg</code></dt>
<dd><p>Display the list of all System V message queues on the target.  For each
message queue, <small>GDB</small> prints the message queue key, the message
queue identifier, the access permissions, the current number of bytes
on the queue, the current number of messages on the queue, the processes
that last sent and received a message on the queue, the user and group
of the owner and creator of the message queue, the times at which a
message was last sent and received on the queue, and the time at which
the message queue was last changed.
</p>
<a name="index-info-os-processes"></a>
</dd>
<dt><code>processes</code></dt>
<dd><p>Display the list of processes on the target.  For each process,
<small>GDB</small> prints the process identifier, the name of the user, the
command corresponding to the process, and the list of processor cores
that the process is currently running on.  (To understand what these
properties mean, for this and the following info types, please consult
the general <small>GNU</small>/Linux documentation.)
</p>
<a name="index-info-os-procgroups"></a>
</dd>
<dt><code>procgroups</code></dt>
<dd><p>Display the list of process groups on the target.  For each process,
<small>GDB</small> prints the identifier of the process group that it belongs
to, the command corresponding to the process group leader, the process
identifier, and the command line of the process.  The list is sorted
first by the process group identifier, then by the process identifier,
so that processes belonging to the same process group are grouped together
and the process group leader is listed first.
</p>
<a name="index-info-os-semaphores"></a>
</dd>
<dt><code>semaphores</code></dt>
<dd><p>Display the list of all System V semaphore sets on the target.  For each
semaphore set, <small>GDB</small> prints the semaphore set key, the semaphore
set identifier, the access permissions, the number of semaphores in the
set, the user and group of the owner and creator of the semaphore set,
and the times at which the semaphore set was operated upon and changed.
</p>
<a name="index-info-os-shm"></a>
</dd>
<dt><code>shm</code></dt>
<dd><p>Display the list of all System V shared-memory regions on the target.
For each shared-memory region, <small>GDB</small> prints the region key,
the shared-memory identifier, the access permissions, the size of the
region, the process that created the region, the process that last
attached to or detached from the region, the current number of live
attaches to the region, and the times at which the region was last
attached to, detach from, and changed.
</p>
<a name="index-info-os-sockets"></a>
</dd>
<dt><code>sockets</code></dt>
<dd><p>Display the list of Internet-domain sockets on the target.  For each
socket, <small>GDB</small> prints the address and port of the local and
remote endpoints, the current state of the connection, the creator of
the socket, the IP address family of the socket, and the type of the
connection.
</p>
<a name="index-info-os-threads"></a>
</dd>
<dt><code>threads</code></dt>
<dd><p>Display the list of threads running on the target.  For each thread,
<small>GDB</small> prints the identifier of the process that the thread
belongs to, the command of the process, the thread identifier, and the
processor core that it is currently running on.  The main thread of a
process is not listed.
</p></dd>
</dl>

</dd>
<dt><code>info os</code></dt>
<dd><p>If <var>infotype</var> is omitted, then list the possible values for
<var>infotype</var> and the kind of OS information available for each
<var>infotype</var>.  If the target does not return a list of possible
types, this command will report an error.
</p></dd>
</dl>

<hr>
<div class="header">
<p>
Next: <a href="Memory-Region-Attributes.html#Memory-Region-Attributes" accesskey="n" rel="next">Memory Region Attributes</a>, Previous: <a href="Vector-Unit.html#Vector-Unit" accesskey="p" rel="prev">Vector Unit</a>, Up: <a href="Data.html#Data" accesskey="u" rel="up">Data</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>
