hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1988-2021 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.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Debugging with GDB: Shell Commands</title>
 
<meta name="description" content="Debugging with GDB: Shell Commands">
<meta name="keywords" content="Debugging with GDB: Shell Commands">
<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="Invocation.html#Invocation" rel="up" title="Invocation">
<link href="Logging-Output.html#Logging-Output" rel="next" title="Logging Output">
<link href="Quitting-GDB.html#Quitting-GDB" rel="previous" title="Quitting GDB">
<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="Shell-Commands"></a>
<div class="header">
<p>
Next: <a href="Logging-Output.html#Logging-Output" accesskey="n" rel="next">Logging Output</a>, Previous: <a href="Quitting-GDB.html#Quitting-GDB" accesskey="p" rel="previous">Quitting GDB</a>, Up: <a href="Invocation.html#Invocation" accesskey="u" rel="up">Invocation</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="Shell-Commands-1"></a>
<h3 class="section">2.3 Shell Commands</h3>
 
<p>If you need to execute occasional shell commands during your
debugging session, there is no need to leave or suspend <small>GDB</small>; you can
just use the <code>shell</code> command.
</p>
<dl compact="compact">
<dd><a name="index-shell"></a>
<a name="index-_0021"></a>
<a name="index-shell-escape"></a>
</dd>
<dt><code>shell <var>command-string</var></code></dt>
<dt><code>!<var>command-string</var></code></dt>
<dd><p>Invoke a standard shell to execute <var>command-string</var>.
Note that no space is needed between <code>!</code> and <var>command-string</var>.
On GNU and Unix systems, the environment variable <code>SHELL</code>, if it
exists, determines which shell to run.  Otherwise <small>GDB</small> uses
the default shell (<samp>/bin/sh</samp> on GNU and Unix systems,
<samp>cmd.exe</samp> on MS-Windows, <samp>COMMAND.COM</samp> on MS-DOS, etc.).
</p></dd>
</dl>
 
<p>The utility <code>make</code> is often needed in development environments.
You do not have to use the <code>shell</code> command for this purpose in
<small>GDB</small>:
</p>
<dl compact="compact">
<dd><a name="index-make"></a>
<a name="index-calling-make"></a>
</dd>
<dt><code>make <var>make-args</var></code></dt>
<dd><p>Execute the <code>make</code> program with the specified
arguments.  This is equivalent to &lsquo;<samp>shell make <var>make-args</var></samp>&rsquo;.
</p></dd>
</dl>
 
<dl compact="compact">
<dd><a name="index-pipe"></a>
<a name="index-_007c"></a>
<a name="index-send-the-output-of-a-gdb-command-to-a-shell-command"></a>
<a name="pipe"></a></dd>
<dt><code>pipe [<var>command</var>] | <var>shell_command</var></code></dt>
<dt><code>| [<var>command</var>] | <var>shell_command</var></code></dt>
<dt><code>pipe -d <var>delim</var> <var>command</var> <var>delim</var> <var>shell_command</var></code></dt>
<dt><code>| -d <var>delim</var> <var>command</var> <var>delim</var> <var>shell_command</var></code></dt>
<dd><p>Executes <var>command</var> and sends its output to <var>shell_command</var>.
Note that no space is needed around <code>|</code>.
If no <var>command</var> is provided, the last command executed is repeated.
</p>
<p>In case the <var>command</var> contains a <code>|</code>, the option <code>-d <var>delim</var></code>
can be used to specify an alternate delimiter string <var>delim</var> that separates
the <var>command</var> from the <var>shell_command</var>.
</p>
<p>Example:
</p><div class="smallexample">
<pre class="smallexample">(gdb) p var
$1 = {
  black = 144,
  red = 233,
  green = 377,
  blue = 610,
  white = 987
}
</pre><pre class="smallexample">(gdb) pipe p var|wc
      7      19      80
(gdb) |p var|wc -l
7
</pre><pre class="smallexample">(gdb) p /x var
$4 = {
  black = 0x90,
  red = 0xe9,
  green = 0x179,
  blue = 0x262,
  white = 0x3db
}
(gdb) ||grep red
  red =&gt; 0xe9,
</pre><pre class="smallexample">(gdb) | -d ! echo this contains a | char\n ! sed -e 's/|/PIPE/'
this contains a PIPE char
(gdb) | -d xxx echo this contains a | char!\n xxx sed -e 's/|/PIPE/'
this contains a PIPE char!
(gdb)
</pre></div>
</dd>
</dl>
 
<p>The convenience variables <code>$_shell_exitcode</code> and <code>$_shell_exitsignal</code>
can be used to examine the exit status of the last shell command launched
by <code>shell</code>, <code>make</code>, <code>pipe</code> and <code>|</code>.
See <a href="Convenience-Vars.html#Convenience-Vars">Convenience Variables</a>.
</p>
<hr>
<div class="header">
<p>
Next: <a href="Logging-Output.html#Logging-Output" accesskey="n" rel="next">Logging Output</a>, Previous: <a href="Quitting-GDB.html#Quitting-GDB" accesskey="p" rel="previous">Quitting GDB</a>, Up: <a href="Invocation.html#Invocation" accesskey="u" rel="up">Invocation</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>