Есть, например, программа в которой, например, используется активно clock_gettime(CLOCK_MONOTONIC) и алгоритмы в целом привязаны к реальному времени. На самом деле на микроконтроллере такие программы останавливать можно, останавливая и счётчик времени. Работа конечно не правильная, но для отладки приемлемо. Бывает хочется остановить в gdb и посмотреть переменные, ещё что-то поделать... Брейкпоинты поставить... Проблема понятно в чём. Пока в gdb стоит часы идут. И после continue всё глючит (часы далеко вперёд убежали). Хотелось бы останавливать часы, пока процесс остановлен. Как?
Единственное что приходит в голову: завернуть clock_gettime в свою функцию, которая к результату clock_gettime будет добавлять некую поправку хранимую в переменной clock_offset, например. Вместо continue (в gdb) написать define mycontinue — макрос считывающий текущиее значение clock_gettime, вычитающий значение когда остановились, clock_laststopped, и сохраняющий в clock_offset. Далее, написать для gdb опять же commands... чтоб при остановке сохранял в clock_laststopped текущее значение clock_gettime. Как-то сложно и не до конца определённо.