Runtime trace points
Relationships of each runtime trace points#
erDiagram
callback_start{
address callback
bool is_intra_process
}
callback_end{
address callback
}
message_construct{
address original_message
address constructed_message
}
dds_bind_addr_to_addr{
address addr_from
address addr_to
}
rclcpp_intra_publish{
address publisher_handle
address message
uint64_t message_timestamp
}
dispatch_subscription_callback{
address message
address callback
uint64_t source_timestamp
uint64_t message_timestamp
}
dispatch_intra_process_subscription_callback{
address message
address callback
uint64_t message_timestamp
}
rcl_publish{
address publisher_handle
address message
}
rclcpp_publish{
address publisher_handle
address message
uint64_t message_timestamp
}
dds_write{
address message
}
dds_bind_addr_to_stamp{
address addr
uint64_t source_stamp
}
rclcpp_intra_publish ||--|| dispatch_intra_process_subscription_callback: message_addr
rclcpp_publish ||--|| rcl_publish: message_addr
rcl_publish ||--|| dds_write: message_addr
dds_write ||--|| dds_bind_addr_to_stamp: message_addr
dds_bind_addr_to_stamp ||--|| dispatch_subscription_callback: source_timestamp
dispatch_intra_process_subscription_callback ||--|| callback_start: callback
dispatch_subscription_callback ||--|| callback_start: callback
callback_start ||--|| callback_end: callback
Using addresses, thread id (tid
) and source timestamp, CARET is able to identify a pair of message publish and corresponding subscription.
However, it's difficult to associate a certain message publish to corresponding callback execution because mapping between callback and publish cannot be obtained automatically.
message_construct
and dds_bind_addr_to_addr
are trace points to adapt to copying and converting instances for binding.
erDiagram
send_transform {
address tf_broadcaster
uint64_t[] stamps
uint32_t[] frame_ids_compact
uint32_t[] child_frame_ids_compact
}
init_tf_broadcaster_frame_id_compact {
address tf_broadcaster
string frame_id
uint32_t frame_id_compact
}
init_tf_buffer_frame_id_compact {
address tf_buffer_core
string frame_id
uint32_t frame_id_compact
}
tf_lookup_transform {
address tf_buffer_core
uint32_t target_frame_id_compact
uint32_t source_frame_id_compact
}
tf_buffer_find_closest{
address tf_buffer_core
uint32_t frame_id_compact
uint32_t child_frame_id_compact
uint64_t stamp
uint32_t frame_id_compact_
uint32_t child_frame_id_compact_
uint64_t stamp_
}
tf_set_transform{
address tf_buffer_core
uint64_t stamp
uint32_t frame_id_compact
uint32_t child_frame_id_compact
}
send_transform ||--o| init_tf_broadcaster_frame_id_compact: frame_id_compact__to__frame_id
send_transform ||--|{ tf_set_transform: frame_id__and__child_frame_id__and_stamp
tf_set_transform }|--|{ tf_buffer_find_closest: frame_id_compact__and_frame_id_compact__and__stamp
tf_buffer_find_closest }|--|| tf_lookup_transform: todo
tf_set_transform ||--|| rclcpp_publish: tid
init_tf_buffer_frame_id_compact |o--|| tf_lookup_transform: todo
Trace point definition#
ros2:callback_start#
[Built-in tracepoints]
Sampled items
- void * callback
- bool is_intra_process
ros2:callback_end#
[Built-in tracepoints]
Sampled items
- void * callback
ros2:message_construct#
[Extended tracepoints]
Sampled items
- void * original_message
- void * constructed_message
ros2:rclcpp_intra_publish#
[Extended tracepoints]
Sampled items
- void * publisher_handle
- void * message
- uint64_t message_timestamp
ros2:dispatch_subscription_callback#
[Extended tracepoints]
Sampled items
- void * message
- void * callback
- uint64_t source_timestamp
- uint64_t message_timestamp
ros2:dispatch_intra_process_subscription_callback#
[Extended tracepoints]
Sampled items
- void * message
- void * callback
- uint64_t message_timestamp
ros2:rcl_publish#
[Built-in tracepoints]
Sampled items
- void * publisher_handle
- void * message
ros2:rclcpp_publish#
[Built-in tracepoints]
Sampled items
- void * publisher_handle
- void * message
- uint64_t message_timestamp
ros2_caret:dds_write#
[Hooked tracepoints]
Sampled items
- void * message
ros2_caret:dds_bind_addr_to_stamp#
[Hooked tracepoints]
Sampled items
- void * addr
- uint64_t source_stamp
ros2_caret:dds_bind_addr_to_addr#
[Hooked tracepoints]
Sampled items
- void * addr_from
- void * addr_to
ros2_caret:send_transform#
[Hooked tracepoints]
Sampled items
- void * tf_broadcaster
- uint64_t[] stamps
- uint32_t[] frame_ids_compact
- uint32_t[] child_frame_ids_compact
ros2_caret:init_tf_broadcaster_frame_id_compact#
[Hooked tracepoints]
Sampled items
- void * tf_broadcaster
- char * frame_id
- uint32 frame_id_compact
lookup_transform_start#
- void * tf_buffer_core
- uint32_t target_frame_id_compact
- uint32_t source_frame_id_compact
tf_buffer_find_closest#
- void * tf_buffer_core
- uint32_t frame_id_compact
- uint32_t child_frame_id_compact
- uint64_t stamp
- uint32t frame_id_compact
- uint32t child_frame_id_compact
- uint64t stamp
tf_set_transform#
- void * tf_buffer_core
- uint64_t stamp
- uint32_t frame_id_compact
- uint32_t child_frame_id_compact
init_tf_buffer_frame_id_compact#
- void * tf_buffer_core
- char * frame_id
- uint32_t frame_id_compact