在 qtcreator 中使用 gdb 时调试 `ros::NodeHandle nh` 收到 SIGSTOP

问题描述 投票:0回答:1

注意:首先,我的代码可以编译成功。如果我只是运行代码,那就没问题了。但如果我在调试模式下运行,错误会合并到

ros::NodeHandle node
行中。具体来说,代码在
_M_initialize()
中的函数
/usr/include/c++/6/bits/stl_tree.h
之后停止(我尝试了c++ 9,但没有成功)。好像无法初始化内存?

我的笔记本也出现同样的问题(ubuntu 20.04)。但在我的另一台装有 ubuntu 16.04 的计算机上,代码在调试模式下运行。

我在这个问题上花了一个多星期,但还没有找到有用的解决方案。如果有人可以帮助解决这个问题,我将不胜感激。请。

我发现原因是我执行

ros::init(argc, argv, "mpccontrol")
后,没有通过waching
rosnode list
初始化的rosnode。 但我仍然不知道如何解决这个问题。为什么
ros::init()
正常执行,但在调试模式下却初始化了一个rosnode。

我的电脑信息: Ubuntu 20.04(我也尝试过buntu 22.04和18.04,也有同样的问题) qt Creator 5.9.4(我也尝试过5.12,没用) gdb 9.2(我也尝试过gdb 8.2) 海湾合作委员会 6.4.0 cmake 3.16.3

我的测试代码如下:

#include <iostream>
#include <ros/ros.h>
using namespace std;


int main(int argc, char *argv[])
{
    ros::init(argc, argv, "mpccontrol");
    ros::NodeHandle node;
    ros::Rate loop_rate(10);

    cout << "Hello World!" << endl;
    int count = 0;
    while (ros::ok()) {
        cout << "******************* publish successfully ************" << endl;
        count ++;
        ros::spinOnce();
        loop_rate.sleep();
    }
    return 0;
}

我的

.pro

TEMPLATE = app
CONFIG += console c++17
CONFIG -= app_bundle
CONFIG -= qt


CONFIG( debug|release){
OBJECTS_DIR = .obj
TARGET = rosTest
}

# #==================== config ros ==================
INCLUDEPATH += /opt/ros/noetic/include \
                ./message    \

DEPENDPATH += /opt/ros/noetic/include  \
    ./message   \

#LIBS += -L /usr/local/lib   \
#        -L/usr/local/lib64\

LIBS += -L/opt/ros/noetic/lib -lroscpp -lrospack \
        -lpthread -lrosconsole -lrosconsole_log4cxx \
        -lrosconsole_backend_interface -lxmlrpcpp \
        -lroscpp_serialization -lrostime  -lcpp_common \
        -lroslib -lyaml-cpp -lkdl_conversions

SOURCES += main.cpp \
    NodeHandleTest.cpp

HEADERS += \
    NodeHandleTest.h

QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO

我尝试过更改系统版本:ubuntu 18.04/ 20.04/ 22.04。看来这个问题和系统版本没有关系

我尝试过更改gdb版本,但不起作用。

我尝试过更改qt Creator版本。

c++ debugging ros
1个回答
0
投票

我通过将 qt Creator 版本更改为 5.12.12 解决了这个问题(下载:https://www.qt.io/offline-installers)。

再次感谢约翰和 BTables。

© www.soinside.com 2019 - 2024. All rights reserved.