GDB 未找到符号 table
GDB not finding symbol table
我无法确定 gdb 没有找到正确的调试符号或它们不是由我的 makefile 生成的原因。我已经添加和删除了各种标志,例如 -g、-ggdb 和 -O0,组合方式尽可能多。如有任何帮助,我们将不胜感激!
生成文件:
FLAGS =-std=c++11 -ggdb -g -O0 -Wall -Werror
CC = g++
OBJS = main.o LSorter.o LNode.o
default: exec
exec: $(OBJS)
$(CC) $(FLAGS) -o exec $(OBJS)
main: main.cpp LSorter.h LNode.h
$(CC) $(FLAGS) -c main.cpp -o main.o
LSorter: LSorter.cpp LSorter.h LNode.h
$(CC) $(FLAGS) -c LSorter.cpp -o LSorter.o
LNode: LNode.cpp LNode.h
$(CC) $(FLAGS) -c LNode.cpp -o LNode.o
clean:
rm exec $(OBJS)
控制台输出:
OBJS = main.o LSorter.o LNode.o
exec: $(OBJS)
$(CC) $(FLAGS) -o exec $(OBJS)
这指定 exec
目标依赖于 main.o
、LSorter.o
和 LNode.o
目标。
make
命令然后继续搜索您的 Makefile 以寻找任何构建 main.o
、Lsorter.o
和 LNode.o
.
的规则
不幸的是,make
在这项崇高的任务中惨遭失败。您的 Makefile
未能为名为 main.o
、Lsorter.o
和 LNode.o
的目标定义任何规则。 make
然后默认使用其隐式规则,即从 .cpp
找到的同名文件构建 .o
文件。 make
中内置的默认 built-in 规则对您的 FLAGS
变量一无所知,如果您在编译时密切注意 make
正在执行的命令你的 cpp
文件你会注意到你的 cpp
文件不是用你的 FLAGS
编译的,因此没有编译任何调试数据。
您的 makefile 似乎确实为目标 main
、LSorter
和 LNode
定义了规则,这些规则使用 FLAGS
来指定 -g
选项。
不幸的是,正如我所解释的,这些不是 make
被指示搜索的目标。
这是一个明显的疏忽。更改构建规则以指定正确的依赖项目标,然后 make clean
并重新编译。
我无法确定 gdb 没有找到正确的调试符号或它们不是由我的 makefile 生成的原因。我已经添加和删除了各种标志,例如 -g、-ggdb 和 -O0,组合方式尽可能多。如有任何帮助,我们将不胜感激!
生成文件:
FLAGS =-std=c++11 -ggdb -g -O0 -Wall -Werror
CC = g++
OBJS = main.o LSorter.o LNode.o
default: exec
exec: $(OBJS)
$(CC) $(FLAGS) -o exec $(OBJS)
main: main.cpp LSorter.h LNode.h
$(CC) $(FLAGS) -c main.cpp -o main.o
LSorter: LSorter.cpp LSorter.h LNode.h
$(CC) $(FLAGS) -c LSorter.cpp -o LSorter.o
LNode: LNode.cpp LNode.h
$(CC) $(FLAGS) -c LNode.cpp -o LNode.o
clean:
rm exec $(OBJS)
控制台输出:
OBJS = main.o LSorter.o LNode.o
exec: $(OBJS)
$(CC) $(FLAGS) -o exec $(OBJS)
这指定 exec
目标依赖于 main.o
、LSorter.o
和 LNode.o
目标。
make
命令然后继续搜索您的 Makefile 以寻找任何构建 main.o
、Lsorter.o
和 LNode.o
.
不幸的是,make
在这项崇高的任务中惨遭失败。您的 Makefile
未能为名为 main.o
、Lsorter.o
和 LNode.o
的目标定义任何规则。 make
然后默认使用其隐式规则,即从 .cpp
找到的同名文件构建 .o
文件。 make
中内置的默认 built-in 规则对您的 FLAGS
变量一无所知,如果您在编译时密切注意 make
正在执行的命令你的 cpp
文件你会注意到你的 cpp
文件不是用你的 FLAGS
编译的,因此没有编译任何调试数据。
您的 makefile 似乎确实为目标 main
、LSorter
和 LNode
定义了规则,这些规则使用 FLAGS
来指定 -g
选项。
不幸的是,正如我所解释的,这些不是 make
被指示搜索的目标。
这是一个明显的疏忽。更改构建规则以指定正确的依赖项目标,然后 make clean
并重新编译。