4

我在 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 设置:

在此处输入图像描述

有什么我做错了吗?

PS这是我的编译输出:

在此处输入图像描述

这是 Makefile.debug 的内容:

################################################# #####################

用于构建的 Makefile:PasswordGuess

由 qmake (2.01a) (Qt 4.8.1) 生成于:ne 28. 4 18:12:57 2013

项目:..\PasswordGuess\PasswordGuess.pro

模板:应用程序

################################################# ###################### 编译器、工具和选项

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_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT
CFLAGS = -g -Wall $
-frtWallti -fexceptionC $(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:
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 = 调试

# 文件

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

# 隐式规则

.后缀:.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 $@ $<

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

# 构建规则

首先:全部
全部: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

分布:
$(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 标题资源 图像源 OBJECTIVE_SOURCES 表单 YACCSOURCES YACCSOURCES LEXSOURCES

清理:compiler_clean
-$(DEL_FILE) debug\main.o

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

检查:首先

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:

# 编译

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

# 安装

安装:强制

卸载:强制

力量:

4

3 回答 3

2

在Projects->Run禁用终端中的运行标志。

禁用此选项后,仍可以使用 Qt Creator 底部面板上显示的控制台输出成功调试项目。

于 2014-10-28T10:35:42.507 回答
0

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

于 2013-06-02T10:05:05.287 回答
0

SET(CMAKE_BUILD_TYPE Debug)在 Linux 的情况下将此行添加到CMakeLists.txt。对于 Windows,您需要在 .pro 文件中设置Debug关键字。

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

参考.pro 文件设置

于 2015-05-28T13:30:06.450 回答