Building ROS 2 with tracing instrumentation
This guide shows you how to build ROS 2 with the tracing instrumentation provided by ros2_tracing
.
For more information, see the repository.
Instrumentation is included in the ROS 2 source code. However, if using the binaries or when building from source, the instrumentation does not actually trigger tracepoints by default. To get the tracepoints, the LTTng tracer needs to be installed, and then part of ROS 2 needs to be (re)built from source.
Note
This guide only applies to Linux systems and assumes that Ubuntu is used.
Prerequisites
Set up your system to build ROS 2 from source. See the source installation page for more information.
Installing the tracer
Install the LTTng tracer and related tools and dependencies.
sudo apt-get update
sudo apt-get install -y lttng-tools liblttng-ust-dev python3-lttng python3-babeltrace babeltrace
This only installs the LTTng userspace tracer, and not the LTTng kernel tracer, since it is not needed to trace ROS 2 applications.
Building
This step depends on whether you are building ROS 2 from source or using ROS 2 binaries.
With source installation
If you have already built ROS 2 from source before installing LTTng, you will need to re-build at least up to the tracetools
package:
cd ~/ws
colcon build --packages-up-to tracetools --cmake-force-configure
With binary installation
If you rely on the ROS 2 binaries (deb packages or “fat” archive), you will need to clone the ros2_tracing
repository into your workspace and build at least up to the tracetools
package:
cd ~/ws/src
git clone https://github.com/ros2/ros2_tracing.git
cd ../
colcon build --packages-up-to tracetools
Validating
Source and validate that tracing is enabled:
cd ~/ws
source install/setup.bash
ros2 run tracetools status
It should print out:
Tracing enabled
If something else is printed, then something went wrong.
Disabling tracing
If the LTTng userspace tracer is installed and found when building tracetools
, tracing will be automatically enabled.
Alternatively, to build and completely remove both the tracepoints and the tracing instrumentation from ROS 2, set the TRACETOOLS_DISABLED
CMake option to ON
:
colcon build --cmake-args -DTRACETOOLS_DISABLED=ON --no-warn-unused-cli