git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Makefile: do not optimize when DEBUG=1

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Mar 6, 2007, 21:50 UTC
Message-ID
<Pine.LNX.4.63.0703062249540.22628@wbgn013.biozentrum.uni-wuerzburg.de>

There is this wonderful debugger named gdb, which sometimes has severe problems when the source is compiled with optimization. So, you have to recompile (at least parts of the source) _without_ -O2 if you want to have a chance to look at otherwise optimized-out variables.

You can do that now by removing just the object files containing the code you want to debug, and saying "make DEBUG=1".

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
 Makefile |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index c3d67af..18fdc5e 100644
--- a/Makefile
+++ b/Makefile
@@ -110,6 +110,8 @@ all::
 # Define NO_PERL_MAKEMAKER if you cannot use Makefiles generated by perl's
 # MakeMaker (e.g. using ActiveState under Cygwin).
 #
+# Define DEBUG=1 to compile without optimization.
+#
 
 GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
 	@$(SHELL_PATH) ./GIT-VERSION-GEN
@@ -123,7 +125,10 @@ uname_P := $(shell sh -c 'uname -p 2>/dev/null || echo not')
 
 # CFLAGS and LDFLAGS are for the users to override from the command line.
 
-CFLAGS = -g -O2 -Wall
+CFLAGS = -g -Wall
+ifndef DEBUG
+	CFLAGS += -O2
+endif
 LDFLAGS =
 ALL_CFLAGS = $(CFLAGS)
 ALL_LDFLAGS = $(LDFLAGS)
-- 
1.5.0.3.2559.g30d3b
Next: Johannes Sixt
Message 1 of 5 in “Makefile: do not optimize when DEBUG=1”
  1. Makefile: do not optimize when DEBUG=1Johannes Schindelin, Mar 6, 2007
  2. Johannes SixtMar 7, 2007
  3. Johannes SchindelinMar 7, 2007
  4. Avoid rebuilding everything if user changes CFLAGS on the make command lineJohannes Sixt, Mar 7, 2007
  5. Junio C HamanoMar 7, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.