Qt Creator忽略断点

5
我在Qt中创建了一个简单的控制台应用程序。这是它的源代码:
当我使用函数Debug -> Start Debugging -> Start Debugging从主菜单运行应用程序时,应用程序会运行并将消息“Hello world”打印到控制台。但是调试器忽略了设置在第6行的断点(如上面的截图所示)。
附加信息: QT Creator版本-2.4.1 QT库版本-4.8.1(但也有4.7.4安装在单独的目录中)
项目构建设置如下:
工具链设置在工具->选项中:
GDB可执行文件存在于目录“E:\ QtSDK \ pythongdb \ python_2.7based”中,这表明我没有问题地调试了类似GUI的Hello World程序。
GDB设置:
我做错了什么吗?
P.S. 这是我的编译输出:
这是Makefile.debug的内容:

CC = gcc
CXX = g++
DEFINES = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT
CFLAGS = -g -Wall $(DEFINES)
CXXFLAGS = -g -frtti -fexceptions -mthreads -Wall $(DEFINES)
INCPATH = -I"......\QtSDK\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"......\QtSDK\Desktop\Qt\4.8.1\mingw\include" -I"......\QtSDK\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"debug" -I"..\PasswordGuess" -I"." -I"......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++"
LINK = g++
LFLAGS = -Wl,-subsystem,console -mthreads
LIBS = -L"e:\QtSDK\Desktop\Qt\4.8.1\mingw\lib" -lQtCored4
QMAKE = e:\qtsdk\desktop\qt\4.8.1\mingw\bin\qmake.exe
IDC = e:\QtSDK\Desktop\Qt\4.8.1\mingw\bin\idc.exe
IDL = midl
ZIP = zip -r -9
DEF_FILE =
RES_FILE =
COPY = copy /y
SED =
COPY_FILE = $(COPY)
COPY_DIR = xcopy /s /q /y /i
DEL_FILE = del
DEL_DIR = rmdir
MOVE = move
CHK_DIR_EXISTS = if not exist
MKDIR = mkdir
INSTALL_FILE = $(COPY_FILE)
INSTALL_PROGRAM = $(COPY_FILE)
INSTALL_DIR = $(COPY_DIR)

OBJECTS_DIR = debug

SOURCES = ..\PasswordGuess\main.cpp
OBJECTS = debug/main.o
DIST =
QMAKE_TARGET = PasswordGuess
DESTDIR = debug\ #避免有换行符
TARGET = PasswordGuess.exe
DESTDIR_TARGET = debug\PasswordGuess.exe

.SUFFIXES: .cpp .cc .cxx .c

.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

first: all
all: Makefile.Debug $(DESTDIR_TARGET)

$(DESTDIR_TARGET): $(OBJECTS)
$(LINK) $(LFLAGS) -o $(DESTDIR_TARGET) $(OBJECTS) $(LIBS)

qmake:FORCE
@$(QMAKE) -spec ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++ CONFIG+=declarative_debug -o Makefile.Debug ..\PasswordGuess\PasswordGuess.pro

dist:
$(ZIP) PasswordGuess.zip $(SOURCES) $(DIST) ..\PasswordGuess\PasswordGuess.pro ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\qconfig.pri ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\modules\qt_webkit_version.pri ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\qt_functions.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\qt_config.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\exclusive_builds.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\default_pre.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\win32\default_pre.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\debug.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\debug_and_release.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\default_post.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\win32\default_post.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\build_pass.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\win32\console.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\declarative_debug.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\win32\rtti.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\win32\exceptions.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\win32\stl.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\shared.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\warn_on.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\qt.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\win32\thread.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\moc.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\resources.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\uic.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\yacc.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\lex.prf ......\QtSDK\Desktop\Qt\4.8.1\mingw\mkspecs\features\include_source_dir.prf HEADERS RESOURCES IMAGES SOURCES OBJECTIVE_SOURCES FORMS YACCSOURCES YACCSOURCES LEXSOURCES
clean:编译器清除
-$(DEL_FILE) debug\main.o

distclean: 清除
-$(DEL_FILE) $(DESTDIR_TARGET)
-$(DEL_FILE) Makefile.Debug

check: first

mocclean: 编译器moc头文件清除编译器moc源代码清除

mocables: 编译器moc头文件制作所有编译器moc源代码制作所有

compiler_moc_header_make_all:
compiler_moc_header_clean:
compiler_rcc_make_all:
compiler_rcc_clean:
compiler_image_collection_make_all: qmake_image_collection.cpp
compiler_image_collection_clean:
-$(DEL_FILE) qmake_image_collection.cpp
compiler_moc_source_make_all:
compiler_moc_source_clean:
compiler_uic_make_all:
compiler_uic_clean:
compiler_yacc_decl_make_all:
compiler_yacc_decl_clean:
compiler_yacc_impl_make_all:
compiler_yacc_impl_clean:
compiler_lex_make_all:
compiler_lex_clean:
compiler_clean:

debug/main.o: ../PasswordGuess/main.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug\main.o ..\PasswordGuess\main.cpp

install: 强制执行

uninstall: 强制执行

强制执行:

3个回答

5

禁用“在终端中运行”标志,方法是在“项目->运行”下进行设置。

一旦禁用此选项,该项目仍然可以通过Qt Creator底部面板显示的控制台输出成功进行调试。


2

SET(CMAKE_BUILD_TYPE Debug) 在 Linux 环境下需要添加到 CMakeLists.txt 文件中。对于 Windows 环境,您需要在 .pro 文件中设置 Debug 关键字。

否则,您也可以简单地设置 cmake 命令-DCMAKE_BUILD_TYPE=Debug,这是最佳解决方案。

请参考.pro 文件设置


1

看起来您的应用程序没有构建调试信息。确保您正在构建调试配置,并使用-g标志(如果您正在使用MinGW)。


1
我将编译器输出和Makefile内容添加到问题中,以评估此选项。 - truthseeker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接