1<html lang="en"> 2<head> 3<title>Patching - Debugging with GDB</title> 4<meta http-equiv="Content-Type" content="text/html"> 5<meta name="description" content="Debugging with GDB"> 6<meta name="generator" content="makeinfo 4.13"> 7<link title="Top" rel="start" href="index.html#Top"> 8<link rel="up" href="Altering.html#Altering" title="Altering"> 9<link rel="prev" href="Calling.html#Calling" title="Calling"> 10<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 11<!-- 12Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 131998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 14Free Software Foundation, Inc. 15 16Permission is granted to copy, distribute and/or modify this document 17under the terms of the GNU Free Documentation License, Version 1.3 or 18any later version published by the Free Software Foundation; with the 19Invariant Sections being ``Free Software'' and ``Free Software Needs 20Free Documentation'', with the Front-Cover Texts being ``A GNU Manual,'' 21and with the Back-Cover Texts as in (a) below. 22 23(a) The FSF's Back-Cover Text is: ``You are free to copy and modify 24this GNU Manual. Buying copies from GNU Press supports the FSF in 25developing GNU and promoting software freedom.''--> 26<meta http-equiv="Content-Style-Type" content="text/css"> 27<style type="text/css"><!-- 28 pre.display { font-family:inherit } 29 pre.format { font-family:inherit } 30 pre.smalldisplay { font-family:inherit; font-size:smaller } 31 pre.smallformat { font-family:inherit; font-size:smaller } 32 pre.smallexample { font-size:smaller } 33 pre.smalllisp { font-size:smaller } 34 span.sc { font-variant:small-caps } 35 span.roman { font-family:serif; font-weight:normal; } 36 span.sansserif { font-family:sans-serif; font-weight:normal; } 37--></style> 38<link rel="stylesheet" type="text/css" href="../cs.css"> 39</head> 40<body> 41<div class="node"> 42<a name="Patching"></a> 43<p> 44Previous: <a rel="previous" accesskey="p" href="Calling.html#Calling">Calling</a>, 45Up: <a rel="up" accesskey="u" href="Altering.html#Altering">Altering</a> 46<hr> 47</div> 48 49<h3 class="section">17.6 Patching Programs</h3> 50 51<p><a name="index-patching-binaries-945"></a><a name="index-writing-into-executables-946"></a><a name="index-writing-into-corefiles-947"></a> 52By default, <span class="sc">gdb</span> opens the file containing your program's 53executable code (or the corefile) read-only. This prevents accidental 54alterations to machine code; but it also prevents you from intentionally 55patching your program's binary. 56 57 <p>If you'd like to be able to patch the binary, you can specify that 58explicitly with the <code>set write</code> command. For example, you might 59want to turn on internal debugging flags, or even to make emergency 60repairs. 61 62 63<a name="index-set-write-948"></a> 64<dl><dt><code>set write on</code><dt><code>set write off</code><dd>If you specify ‘<samp><span class="samp">set write on</span></samp>’, <span class="sc">gdb</span> opens executable and 65core files for both reading and writing; if you specify <kbd>set write 66off</kbd> (the default), <span class="sc">gdb</span> opens them read-only. 67 68 <p>If you have already loaded a file, you must load it again (using the 69<code>exec-file</code> or <code>core-file</code> command) after changing <code>set 70write</code>, for your new setting to take effect. 71 72 <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 73as well as reading. 74</dl> 75 76 </body></html> 77 78