diff --git a/rmw_cyclonedds_cpp/CMakeLists.txt b/rmw_cyclonedds_cpp/CMakeLists.txt
index 2253a605..c1171a5c 100644
--- a/rmw_cyclonedds_cpp/CMakeLists.txt
+++ b/rmw_cyclonedds_cpp/CMakeLists.txt
@@ -29,6 +29,7 @@ find_package(ament_cmake_ros REQUIRED)
find_package(rcutils REQUIRED)
find_package(rcpputils REQUIRED)
+find_package(tracetools REQUIRED)
#find_package(cyclonedds_cmake_module REQUIRED)
find_package(CycloneDDS QUIET CONFIG)
@@ -77,6 +78,7 @@ ament_target_dependencies(rmw_cyclonedds_cpp
"rmw"
"rmw_dds_common"
"rosidl_runtime_c"
+ "tracetools"
)
configure_rmw_library(rmw_cyclonedds_cpp)
diff --git a/rmw_cyclonedds_cpp/package.xml b/rmw_cyclonedds_cpp/package.xml
index 27ff047f..5f7b4f34 100644
--- a/rmw_cyclonedds_cpp/package.xml
+++ b/rmw_cyclonedds_cpp/package.xml
@@ -18,6 +18,7 @@
rosidl_runtime_c
rosidl_typesupport_introspection_c
rosidl_typesupport_introspection_cpp
+ tracetools
ament_lint_auto
ament_lint_common
diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp
index 7ebc84a5..59ab4d0b 100644
--- a/rmw_cyclonedds_cpp/src/rmw_node.cpp
+++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp
@@ -75,6 +75,8 @@
#include "rosidl_typesupport_cpp/message_type_support.hpp"
+#include "tracetools/tracetools.h"
+
#include "namespace_prefix.hpp"
#include "dds/dds.h"
@@ -1543,6 +1545,7 @@ extern "C" rmw_ret_t rmw_publish(
return RMW_RET_INVALID_ARGUMENT);
auto pub = static_cast(publisher->data);
assert(pub);
+ TRACEPOINT(rmw_publish, static_cast(publisher), ros_message);
if (dds_write(pub->enth, ros_message) >= 0) {
return RMW_RET_OK;
} else {