1#include <chrono>
2#include <cstdio>
3#include <mutex>
4#include <random>
5#include <thread>
6
7#define NUM_OF_THREADS 4
8
9std::mutex hw_break_mutex;
10
11void
12hw_break_function (uint32_t thread_index) {
13 printf (format: "%s called by Thread #%u...\n", __FUNCTION__, thread_index);
14}
15
16
17void
18thread_func (uint32_t thread_index) {
19 printf (format: "%s (thread index = %u) starting...\n", __FUNCTION__, thread_index);
20
21 hw_break_mutex.lock();
22
23 hw_break_function(thread_index); // Call hw_break_function
24
25 hw_break_mutex.unlock();
26}
27
28
29int main (int argc, char const *argv[])
30{
31 std::thread threads[NUM_OF_THREADS];
32
33 printf (format: "Starting thread creation with hardware breakpoint set...\n");
34
35 for (auto &thread : threads)
36 thread = std::thread{thread_func, std::distance(first: threads, last: &thread)};
37
38 for (auto &thread : threads)
39 thread.join();
40
41 return 0;
42}
43

source code of lldb/test/API/functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/main.cpp