Разница программного и аппаратного обеспечения

Читая эту документацию,

Я не заметил разницу между программным обеспечением и аппаратной точкой наблюдения. Я читал, что программная точка останова (не точка наблюдения) заменяет инструкцию неверной инструкцией для запуска прерывания (а затем останавливает программу), и что аппаратная точка останова помещает адрес команды, в которой нужно остановиться, в регистр и сравнивает ее с каждым выполненная инструкция.

Тем не менее, в документации по контрольным точкам я читаю, что "GDB выполняет программную контрольную точку, выполняя пошаговое выполнение вашей программы и каждый раз проверяя значение переменной", что, по моему мнению, является в основном определением аппаратной контрольной точки.

Кто-то лучше понимает разницу между программным и аппаратным наблюдением?

1 ответ

Решение

Программная точка наблюдения реализуется путем пошагового выполнения программы и проверки значения переменной каждый раз, когда управление возвращается в отладчик. Это очень медленно, поскольку включает несколько переключений контекста для каждой инструкции, выполняемой в тестируемой программе.

Аппаратная точка наблюдения помещает адрес слова памяти для наблюдения в специальный регистр отладки. Процессор проверяет каждую запись в память, чтобы определить, нацелен ли он на адрес в регистре, и если это так, он прерывает тестируемую программу и возвращает управление отладчику. Тестируемая программа не обязательно должна быть пошаговой, так что это намного быстрее, но обычно существует только несколько из этих специальных регистров отладки, поэтому вы можете иметь только одну или две аппаратные точки наблюдения за раз.

Вы можете быть смущены этим, потому что "пошаговое выполнение программы и проверка [что-то] каждый раз, когда элемент управления возвращается к отладчику", звучит подобно описанию, которое вы слышали о аппаратных точках останова, где ЦП проверяет при каждой выборке команд, достигла ли она адрес точки останова. Но с аппаратной точкой останова это проверяет процессор, а не отладчик, что на несколько порядков быстрее. И так же с аппаратной точкой наблюдения.

Другие вопросы по тегам