【发布时间】:2017-05-15 13:20:43
【问题描述】:
我无法进行调试。
我正在使用 2.1.0 版本的 REDHAWK,我正在尝试创建自定义组件。
我可以让发布版本运行和工作。
这就是我所做的,我创建了一个非常基本的自定义组件,它接受输入,将其乘以 2 并将其推送到输出流,非常简单。现在我尝试在沙盒中以调试模式运行这个组件,瞬间崩溃。我唯一能看到的是调用堆栈的最后一个条目,即
boost::shared_ptr<rh_logger::Logger>::operator->() at shared_ptr.hpp:653
如果我选择在不调试的情况下运行我的组件,那么一切正常。它甚至可以进行乘法运算。
我不知道发生了什么,显然这个智能指针类做了一个断言检查来验证它返回的指针并最终崩溃,因为它是零。作为 -> 运算符,这似乎很危险。 SIGSEGV 是抛出的错误,我想知道 BOOST_ASSERT 是否会导致失败?
操作系统是 CentOS 7 64 位,运行在普通桌面英特尔处理器上,不记得是哪个。
我按照 REDHAWK 手册 2.2 部分的说明通过下载存储库来安装 REDHAWK。
新组件是使用 REDHAWK IDE(基于 Eclipse)创建的,我选择 C++ 作为程序语言。它似乎是一个共享库,当我运行它时,会启动一个名为 ComponentHost 的进程。
我正在尝试通过右键单击“项目”菜单中的组件并选择“调试为 - 沙盒中的组件”来启动沙盒中的组件。以这种方式在 Release 模式下运行组件是可行的。
【问题讨论】:
-
这东西对我来说真的是在扼杀REDHAWK。我遇到了一些代码问题,导致它崩溃。
标签: redhawksdr