g ++不生成调试符号

时间:2017-11-05 10:03:36

标签: c++ linux makefile gnu-make

我正在学习linux,我的第一步是调整我的project以便在linux上运行。这里是简单的makefile(主要用于教育目的),它生成文件:

#------------------------BUILD VARIABLES-----------------------------
#   Directories, containing headers
INCLUDE_DIR = ../Include/
#   Output directory which will contain output compiled file
OUTPUT_DIR = ../Bin/Debug/

SOURCES = EngineManager.cpp Geometry.cpp Main.cpp Model.cpp \
      Shaders.cpp TGAImage.cpp 

HEADERS = EngineManager.h Geometry.h Line.h Model.h Shaders.h \
      TGAImage.h Triangle.h

#------------------------BUILD_RULES---------------------------------
TinyRenderBuilding : $(addprefix $(INCLUDE_DIR), $(HEADERS)) $(SOURCES)
    mkdir -p  $(OUTPUT_DIR)
    g++ -std=c++14 -o $(OUTPUT_DIR)TinyRender.out -g -I$(INCLUDE_DIR) $(SOURCES)

我无法理解,g++为什么不生成调试符号?提交了-g选项

2 个答案:

答案 0 :(得分:2)

我不完全确定,但您可以尝试-g或-ggdb。您可以对这些进行一些研究。我们使用这些参数来使用gdb工具调试C程序。

答案 1 :(得分:2)

根据你的makefile g++应该生成调试符号(-g选项被提供)。要确认这一点,您可以对生成的二进制文件运行file

$ file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=9fe588c18099ef418daf288931bb033cc287922e, with debug_info, not stripped

(注意输出中的with debug_info字符串)