我有一个项目,我正在工作,它有多个文件,我使用make来编译该项目。这是makefile
CC = /opt/gcc-4.7-cilkplus/bin/gcc
CFLAGS = -ggdb3 -Wall
COMPLILEFLAGS = `mysql_config --include` -I/opt/gcc-4.7-cilkplus/include/
LINKERINFO = `mysql_config --cflags --libs` -lrt -lm -lz
CILKFLAGS = -lcilkrts
# To be provided at the commandline
DIR = './bloom'
MODE = '2'
FILENAME = 'database.info'
exec: main.o mysql-client.o databaseConnection-common.o murmurhash3.o bloom-filter.o md5.o auxilary-functions.o
$(CC) $(CFLAGS) -o exec main.o mysql-client.o databaseConnection-common.o murmurhash3.o bloom-filter.o \
md5.o auxilary-functions.c $(LINKERINFO) $(CILKFLAGS)
main.o: main.c mysql-client.h databaseConnection-common.h bloom-filter.h
$(CC) $(CFLAGS) $(COMPLILEFLAGS) -c main.c $(CILKFLAGS)
bloom-filter.o: bloom-filter.c bloom-filter.h murmurhash3.h auxilary-functions.h
$(CC) $(CFLAGS) $(COMPLILEFLAGS) -c bloom-filter.c
murmurhash3.o: murmurhash3.c murmurhash3.h
$(CC) $(CFLAGS) -c murmurhash3.c
md5.o: md5.c md5.h
$(CC) $(CFLAGS) -c md5.c
mysql-client.o: mysql-client.c mysql-client.h databaseConnection-common.h
$(CC) $(CFLAGS) $(COMPLILEFLAGS) -c mysql-client.c
databaseConnection-common.o: databaseConnection-common.c databaseConnection-common.h
$(CC) $(CFLAGS) $(COMPLILEFLAGS) -c databaseConnection-common.c
auxilary-functions.o: auxilary-functions.h auxilary-functions.c
$(CC) $(CFLAGS) -c auxilary-functions.c
run:
./exec $(MODE) $(FILENAME) $(DIR)我在某个位置设置了breakpoint,然后在那里执行next表单,但我得到
Single stepping until exit from function bf_dup_eleminate_read, which has no line number information.
bf_dup_eleminate_read是bloom-filter.c中的一个函数。即使使用适当的选项编译bloom-filter.c,我也无法理解为什么会发生这种情况
发布于 2012-06-30 00:55:40
我没有看到任何地方的-g旗帜。它通知编译器发出调试信息,因此如果您希望gdb显示行号,则需要将其添加到编译行中。
发布于 2015-02-04 22:12:42
尝试更新您的gdb。可能是您的gcc版本太新了。我得到了同样的问题,并在更新我的gdb后修复了它。
发布于 2021-11-21 13:26:53
现在是2021年,所以现在的情况有点不同。通常,我发现-ggdb标志更有用。它不仅更冗长,而且似乎更不容易出错(但这是我的观点)。您还需要确保将-ggdb标志添加到所有目标文件。给出一些参考,如果你的项目没有像预期的那样调试,一种更可靠的方法来让项目继续进行。下面是我刚刚用VSCode v1.62.1成功构建和调试的一个项目的代码片段。它是使用GNU C++ Compiler g++ 10.3,编译的,使用GNU Debugger gdb v9.2,进行调试,并通过GNU Make 4.2.1使用make命令构建
# Here is an example from my current project that I debug on vscode
TARGET = A10
ALL = fraction.o main.o
GCC = g++
FLAGS = -Wall -c
${TARGET}: fraction.o main.o
${GCC} -Wall -ggdb ${ALL} -o ${TARGET}
main.o: main.cpp fraction.h
${GCC} -Wall -ggdb -c main.cpp
fraction.o: fraction.cpp fraction.h
${GCC} -Wall -ggdb -c fraction.cpp fraction.hhttps://stackoverflow.com/questions/11265803
复制相似问题