我正在使用 eloquent,我想在我的 ros2 项目中添加一些断言。
我在cpp中尝试了经典的
assert()
marco,但似乎效果不太好。我的代码中有一个assert(false)
,但是当我在调试中运行它时,控制台只是说进程已经死亡,但没有指定在哪个函数中以及在哪一行。我也尝试过gdb attach
,同样只是说收到了SIGABRT信号,这不足以进行调试。
所以我转向ros本身,看看是否有任何内置的东西可以使用。我找到了 ros1 的
ROS_ASSERT()
,以及 Foxy 的 rcpputils::assert_true()
,但没有找到 eloquent 的内容。
那么,我如何有效地断言 ros2 eloquent 中的某些内容呢?或者我错过了什么?由于断言已经在ros1中了,所以我找不到在ros2中放弃它的原因。
Eleoquent 分支中似乎缺少必要的标头。然而,它可以在 [Iron] 和 Rolling(latest) 分支中看到。 看起来是在 2020 年 2 月添加的,比 Eleoquent 的发布日期晚。 在我的 ROS2 Iron 上,我可以使用以下代码调用 API:
#include <rcpputils/asserts.hpp>
//...
rcpputils::assert_true(...);