如何在ROS2 eloquent中应用断言?

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

我正在使用 eloquent,我想在我的 ros2 项目中添加一些断言。

我在cpp中尝试了经典的

assert()
marco,但似乎效果不太好。我的代码中有一个
assert(false)
,但是当我在调试中运行它时,控制台只是说进程已经死亡,但没有指定在哪个函数中以及在哪一行。我也尝试过
gdb attach
,同样只是说收到了SIGABRT信号,这不足以进行调试。

所以我转向ros本身,看看是否有任何内置的东西可以使用。我找到了 ros1 的

ROS_ASSERT()
,以及 Foxy 的
rcpputils::assert_true()
,但没有找到 eloquent 的内容。

那么,我如何有效地断言 ros2 eloquent 中的某些内容呢?或者我错过了什么?由于断言已经在ros1中了,所以我找不到在ros2中放弃它的原因。

assert assertion ros2
1个回答
0
投票

Eleoquent 分支中似乎缺少必要的标头。然而,它可以在 [Iron] 和 Rolling(latest) 分支中看到。 看起来是在 2020 年 2 月添加的,比 Eleoquent 的发布日期晚。 在我的 ROS2 Iron 上,我可以使用以下代码调用 API:

#include <rcpputils/asserts.hpp> //... rcpputils::assert_true(...);
    
© www.soinside.com 2019 - 2024. All rights reserved.