NOP-инструкции и отладка.
Alex Che, 2009-09-09 12:11
При отладке приложений часто бывает необходимо внести исправления в исходный код программы. Для того, чтобы эти исправления вступили в силу, обычно надо пересобрать приложение и заново запустить отладку. Однако, в Microsoft Visual Studio есть функция edit-and-continue (редактируй-и-продолжай), которая позволяет исправлять исходный код и применять эти исправления без перезапуска приложения. Когда-нибудь задумывались, как она работает?
Весь секрет в NOP-инструкциях, которые компилятор вставляет в определенные места исполняемого кода. Их-то как раз и можно заменить на вызов новых операторов.
Кроме того, NOP-инструкции позволяют ставить точки останова в те места исходного текста, для которых иначе не существовало бы соответствующего исполняемого кода. Например, на начало блока(открывающая фигурная скобка в C++ и C#). Или на оператор, который бы иcчез в результате оптимизации.
Кстати: Генерация NOP-инструкций может иметь смысл и при компиляции release-версии приложения. Например, при выравнивании блока кода для улучшения кэширования.
Весь секрет в NOP-инструкциях, которые компилятор вставляет в определенные места исполняемого кода. Их-то как раз и можно заменить на вызов новых операторов.
Кроме того, NOP-инструкции позволяют ставить точки останова в те места исходного текста, для которых иначе не существовало бы соответствующего исполняемого кода. Например, на начало блока(открывающая фигурная скобка в C++ и C#). Или на оператор, который бы иcчез в результате оптимизации.
Кстати: Генерация NOP-инструкций может иметь смысл и при компиляции release-версии приложения. Например, при выравнивании блока кода для улучшения кэширования.
Ярлыки: cpp, csharp, development

Комментарии: 0:
Отправить комментарий
<< Главная страница