Как valgrind работает?

Мои 10 битов: D

мне всегда говорили, что Модульные тесты тестирование отдельный компонент - который должен быть осуществлен к его самому полному. Теперь, это имеет тенденцию иметь много уровней, так как большинство компонентов сделано из меньших частей. Для меня единица является функциональным компонентом системы. Таким образом, это должно обеспечить что-то вроде значения (т.е. не метод для строкового парсинга, а HtmlSanitizer, возможно).

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

реальная подвижная строка, хотя.. Я сфокусировался бы больше на том, чтобы заставлять проклятый код работать точка ^_^

76
задан tshepang 23 September 2013 в 09:05
поделиться

3 ответа

Valgrind в основном запускает ваше приложение в «песочнице». Во время работы в этой песочнице он может вставлять свои собственные инструкции для выполнения расширенной отладки и профилирования.

Из руководства:

Затем ваша программа запускается на синтетическом процессоре, предоставляемом ядром Valgrind. Когда новый код выполняется впервые, ядро ​​передает код выбранному инструменту. Инструмент добавляет к этому свой собственный инструментальный код и передает результат обратно в ядро, которое координирует дальнейшее выполнение этого инструментированного кода.

Таким образом, valgrind предоставляет виртуальный процессор, который выполняет ваше приложение. Однако перед обработкой инструкций вашего приложения они передаются в инструменты (например, memcheck). Эти инструменты похожи на плагины, и они могут модифицировать ваше приложение до того, как оно будет запущено на процессоре.

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

100
ответ дан 24 November 2019 в 11:18
поделиться

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

4
ответ дан 24 November 2019 в 11:18
поделиться

Valgrind - это, по сути, виртуальная машина , которая выполняет вашу программу. Это виртуальная архитектура, которая перехватывает каждый вызов для выделения / освобождения памяти.

2
ответ дан 24 November 2019 в 11:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: