我在Qt中创建了一个简单的控制台应用程序。这是源代码:
当我使用函数Debug - >开始调试 - >从主菜单开始调试,应用程序运行并打印消息" 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 \桌面\ Qt的\ 4.8.1 \ mingw的\包括" -I" ...... \ QTSDK \桌面\ Qt的\ 4.8.1 \ mingw的\包括\ ActiveQt可" -I"调试" -I" .. \ PasswordGuess" -I"" -I" ...... \ QTSDK \桌面\ 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 =复制/ y
SED =
COPY_FILE = $(COPY)
COPY_DIR = xcopy / s / q / y / i
DEL_FILE = del
DEL_DIR = rmdir
MOVE =移动
CHK_DIR_EXISTS =如果不存在
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 \ #avoid trailing-slash linebreak
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 $ @ $<
首先:全部 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 \功能\ 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标题资源图像来源目标_SOURCES形式YACCSOURCES YACCSOURCES LEXSOURCES
clean:compiler_clean
- $(DEL_FILE)debug \ main.o
检查:第一次
mocclean:compiler_moc_header_clean compiler_moc_source_clean
mocables:compiler_moc_header_make_all compiler_moc_source_make_all
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
安装:FORCE
卸载:FORCE
FORCE:
答案 0 :(得分:0)
听起来您的应用程序是在没有调试信息的情况下构建的。确保您正在构建Debug配置并使用-g标志(如果您使用的是MinGW)。
答案 1 :(得分:0)
在项目 - >运行下禁用在终端中运行 标记。
禁用此选项后,仍可使用Qt Creator底部面板上显示的控制台输出成功调试项目。
答案 2 :(得分:0)
SET(CMAKE_BUILD_TYPE调试)在Linux的情况下将此行添加到 CMakeLists.txt 。对于Windows,您需要在.pro文件中设置 Debug 关键字。
此外,您还可以简单地设置cmake命令 -DCMAKE_BUILD_TYPE = Debug ,这是最佳解决方案。