blob: 8a43445b1fb777a15c31a69b6e98385a79c88298 [file] [log] [blame]
<html lang="en">
<head>
<title>Patching - Debugging with GDB</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Debugging with GDB">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Altering.html#Altering" title="Altering">
<link rel="prev" href="Calling.html#Calling" title="Calling">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
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.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Patching"></a>
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="Calling.html#Calling">Calling</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Altering.html#Altering">Altering</a>
<hr>
</div>
<h3 class="section">17.6 Patching Programs</h3>
<p><a name="index-patching-binaries-945"></a><a name="index-writing-into-executables-946"></a><a name="index-writing-into-corefiles-947"></a>
By default, <span class="sc">gdb</span> opens the file containing your program's
executable code (or the corefile) read-only. This prevents accidental
alterations to machine code; but it also prevents you from intentionally
patching your program's binary.
<p>If you'd like to be able to patch the binary, you can specify that
explicitly with the <code>set write</code> command. For example, you might
want to turn on internal debugging flags, or even to make emergency
repairs.
<a name="index-set-write-948"></a>
<dl><dt><code>set write on</code><dt><code>set write off</code><dd>If you specify &lsquo;<samp><span class="samp">set write on</span></samp>&rsquo;, <span class="sc">gdb</span> opens executable and
core files for both reading and writing; if you specify <kbd>set write
off</kbd> (the default), <span class="sc">gdb</span> opens them read-only.
<p>If you have already loaded a file, you must load it again (using the
<code>exec-file</code> or <code>core-file</code> command) after changing <code>set
write</code>, for your new setting to take effect.
<br><dt><code>show write</code><dd><a name="index-show-write-949"></a>Display whether executable files and core files are opened for writing
as well as reading.
</dl>
</body></html>