使用 QtCreator 设置 GDB

Posted

技术标签:

【中文标题】使用 QtCreator 设置 GDB【英文标题】:Setup GDB with QtCreator 【发布时间】:2014-10-10 17:41:33 【问题描述】:

我有一个使用 OpenCV 和 cmake 的简单项目,并且有两个源文件只有 segmentation.h 和 segmentation.cpp。

这是 cmake 文件:

project(Segment)
cmake_minimum_required(VERSION 2.8)

SET(CMAKE_BUILD_TYPE Debug)
SET(CMAKE_VERBOSE_MAKEFILE true)

if(CMAKE_COMPILER_IS_GNUCXX)
    message(STATUS "GCC detected, adding compile flags")
    set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -O0 -g -std=c++98 -Wall")
endif(CMAKE_COMPILER_IS_GNUCXX)

find_package(OpenCV REQUIRED)
add_executable(Lulu segmentation.cpp segmentation.h)
target_link_libraries(Lulu $OpenCV_LIBS)

我创建了一个调试版本,并将参数发送到 cmake: -DCMAKE_BUILD_TYPE=Debug 。但是QtCreator还是会跳过断点,无法正常启动gdb:

&"warning: GDB: Failed to set controlling terminal: Inappropriate ioctl for device\n"

如何解决这个问题?

【问题讨论】:

不是 100% 确定,但是 gdb 警告可能与它不起作用无关,它只是意味着 gdb 没有在真正的终端中运行。你能找到实际使用的编译命令,并检查-g 开关真的在那里吗?也很好奇,为什么古-std=c++98 【参考方案1】:

转到项目运行并在运行设置中选中在终端中运行框。它将使 QT Creator 在与 gdb 良好配合的 XTerm(默认)中启动程序,并导致 &"warning: GDB: Failed to set control terminal: Inappropriate ioctl for device\n" 问题解决离开。

默认情况下,启动调试器时,它也会将 QT Creator 带到前台,从而隐藏启动的终端。要停止此行为,请转到:工具选项调试器。在常规选项卡中,取消选中在应用程序中断时将 Qt Creator 置于前台的复选框。

如果要更改终端,可以在选项环境中进行。在 System 部分中,将 Terminal 设置为您想要的。对于原生 Ubuntu / Gnome 终端,将其设置为 /usr/bin/gnome-terminal -x。此设置中的参数必须告诉终端执行外部命令或程序。

【讨论】:

以上是关于使用 QtCreator 设置 GDB的主要内容,如果未能解决你的问题,请参考以下文章

设置QtCreator多核编译

QtCreator:如何设置调试参数? [复制]

使用 LLVM 在 Windows 上使用 QtCreator 设置 Cocos2dx 项目

qtcreator忘记密码

Linux QtCreator设置mingw编译器生成windows程序

QtCreator影子构建与默认编译目录