В руководстве GDB указано, что при использовании режима all-stop
для отладки многопоточного приложения невозможно продвигать каждый поток в режиме блокировки ровно на одну инструкцию. Это имеет смысл, поскольку шаг в GDB по существу позволяет ОС планировать все потоки (однако ОС решает это сделать) до тех пор, пока следующий оператор не будет достигнут потоком, для которого был вызван шаг.
Мой вопрос заключается в следующем: разумно ли предположить, что среднее поведение планирования ОС между шагами GDB сравнимо со средним поведением планирования ОС, когда оно не выполняется (при этом все еще используя GDB, чтобы сохранить как можно больше переменных постоянными), насколько это возможно), или достаточно ли степпинга мешает планированию, чтобы продвижение потоков не было (в среднем) таким же, как без степпинга?
Если степпинг влияет на поведение, как я могу получить точное представление о потоке многопоточной программы и состоянии программы в дискретных точках моей программы? Будет ли возможна запись и воспроизведение?