0
私はサイドにゲームエンジンを書いています。私は何かをデバッグする必要がある場合を除いて、大きな進歩を遂げてきました。私は、GDBを実行すると、私は通常、このようにスタックトレースを取得する:それは本当にハードに、デバッグを行うことが可能GDBが有用なバックトレースを返さない
Thread 2 received signal SIGABRT, Aborted.
0x00007fffb73f9d42 in ??()
(gdb) bt
#0 0x00007fffb73f9d42 in ??()
#1 0x00007fffb74e75bf in ??()
#2 0x00007fff5fbfafd0 in ??()
#3 0x000003075fbfb110 in ??()
#4 0x00007fff5fbfafd0 in ??()
#5 0x00007fffb5edbc2f in ??()
#6 0x00007fff5fbfafe0 in ??()
#7 0x00007fffb735f420 in ??()
#8 0xffffffff5fbfb110 in ??()
#9 0x0000000000000030 in ??()
#10 0x00007fffffffffdf in ??()
#11 0x00007fffc01c1a20 in ??()
#12 0x00007fff5fbfb100 in ??()
#13 0x00007fffb5eb584a in ??()
#14 0x0000000000000000 in ??()
を。私はmacOS Sierraで、これは私のMakefileです:
OUT_FILE := game
OUT_DIR := out
INC_DIR := src
SRC_DIR := src
OBJ_DIR := obj/native
C := gcc
CXX := g++
LINKER := g++
INC_DIRS := -I$(INC_DIR)
C_FLAGS = \
-Wall \
-D NATIVE \
-pedantic \
-g
CXX_FLAGS = \
-std=c++11 \
-std=c++14 \
-Wall \
-D NATIVE \
-pedantic \
-D DRAW_FPS \
-D DRAW_COLLISION \
-gdwarf \
-g
#-Wextra \
#-Wshadow \
EXEC_FLAGS =
LIBS := -I /Library/Frameworks/SDL2.framework/Headers -I /Library/Frameworks/SDL2_image.framework/Headers -I /Library/Frameworks/SDL2_ttf.framework/Headers -framework SDL2 -framework SDL2_image -framework SDL2_ttf
SRC_FILES := $(shell find $(SRC_DIR) -name '*.cpp' -o -name '*.c')
OBJ_FILES := $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.o, $(SRC_FILES))
OBJ_FILES := $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(OBJ_FILES))
DEPFILES := $(patsubst $(SRC_DIR)/%.cpp, $(OBJ_DIR)/%.d, $(SRC_FILES))
DEPFILES := $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.d, $(DEPFILES))
$(OUT_FILE): $(OBJ_FILES)
$(LINKER) $(CXX_FLAGS) $(EXEC_FLAGS) $^ $(LIBS) -o [email protected]
clean:
rm -rf $(OBJ_DIR) $(OUT_FILE)
list:
@echo "$(SRC_FILES)"
@echo "$(OBJ_FILES)"
depends:
rm -rf $(OBJ_DIR)/*.d
$(MAKE) $(DEPFILES)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(@D)
$(C) $(C_FLAGS) $(INC_DIRS) -c $< -o [email protected]
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
@mkdir -p $(@D)
$(CXX) $(CXX_FLAGS) $(INC_DIRS) -c $< -o [email protected]
$(OBJ_DIR)/%.d: $(SRC_DIR)/%.cpp
@mkdir -p $(@D)
$(CXX) $(CXX_FLAGS) $(INC_DIRS) -MM $< | tr '\n\r\\' ' ' | sed -e 's%^%[email protected] %' -e 's% % $(OBJ_DIR)/%' > [email protected]
-include $(DEPFILES)
誰かが私に欠けていることを知っていますか?
https://developer.apple.com/library/content/technotes/tn2124/_index.html#//apple_ref/doc/uid/DTS10003391-CH1-SECENABLE – stark
0x0000000000000000 nullポインタdereferencigのように見えます。おそらく、スタックが壊れている可能性があります。スタックフレームの上に役に立つものはありますか?あなたは-gと-gdrwarfを同時に切り替えます。また、あなたはC++ 14とC++ 11を持っています。 –
いいえ、単にgdbを初期化するだけで、いくつかの 'cout'があります。私は日々C++の開発者ではないので、公正なものを試してみるために、両方の人を追加しました。それがうまくいくかどうかは分かりませんでした。 –