Возможности встроенного отладчика Visual C++
От: Александр Шаргин Россия RSDN.ru
Дата: 16.12.02 11:10
Оценка: 655 (16) +1
Статья:
Возможности встроенного отладчика Visual C++
Автор(ы): Александр Шаргин
Дата: 27.01.2002


Авторы:
Александр Шаргин

Аннотация:
Встроенный отладчик Visual C++ – это мощный и удобный инструмент, оказывающий неоценимую помощь в процессе поиска и устранения ошибок в программе. Прежде чем изучать конкретные техники отладки, необходимо ознакомиться с его возможностями.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
[ExecutionControl] ???
От: giv Украина  
Дата: 17.12.02 11:10
Оценка:
Пытался я под 7-мой студией (а если точнее — и под 7 и под 7.1 — то бишь MSVS.NET 2002 и MSVS.NET 2003, соответственно) использовать эту секцию, но никакого видимого результата не заметил. Хотя под MSVC 6.0 все работает прекрасно...
Re: Возможности встроенного отладчика Visual C++
От: Polosaty Беларусь  
Дата: 15.03.04 08:57
Оценка:
Цитата из статьи:

ПРИМЕЧАНИЕ

В современных процессорах Intel существуют отладочные регистры (DR0-DR7), которые позволяют установить до 4 аппаратных точек останова. Visual C++ использует эти регистры, но когда их количества оказывается недостаточно, их функциональность эмулируется посредством int 3.

Интересно, зачем отладчик Visual использует эти регистры? Насколько я понимаю, эти 4 аппаратных точки останова являются брейкпоинтами по доступу к памяти. Насколько я знаю, отладчик Visual не поддерживает такие брейкпоинты, а все, что он умеет — это трассировать и вставлять инструкцию int3. И вообще, он является обычным отладчиком процессов 3-го кольца.
Или я не прав?
Re[2]: Возможности встроенного отладчика Visual C++
От: Alexander Shargin Россия RSDN.ru
Дата: 15.03.04 13:21
Оценка:
Здравствуйте, Polosaty, Вы писали:

P>Цитата из статьи:


P>ПРИМЕЧАНИЕ


P>В современных процессорах Intel существуют отладочные регистры (DR0-DR7), которые позволяют установить до 4 аппаратных точек останова. Visual C++ использует эти регистры, но когда их количества оказывается недостаточно, их функциональность эмулируется посредством int 3.


P>Интересно, зачем отладчик Visual использует эти регистры? Насколько я понимаю, эти 4 аппаратных точки останова являются брейкпоинтами по доступу к памяти. Насколько я знаю, отладчик Visual не поддерживает такие брейкпоинты, а все, что он умеет — это трассировать и вставлять инструкцию int3. И вообще, он является обычным отладчиком процессов 3-го кольца.

P>Или я не прав?

Отладчик Visual C++ умеет ставить брейкпоинты на доступ к памяти (о чём подробно рассказано в статье ), и именно для этих целей использует вышеупомянутые регистры. Это позволяет существенно ускорить отладку, так как эмуляция брейкпойнтов на доступ к памяти работает очень медленно (фактически, после выполнения каждой инструкции надо останавливать программу и проверять, не изменилось ли содержимое памяти).

Чтобы проверить этот факт в своё время, я ставил 1, 2, 3, 4 брейкпоинта ан память, и отладка работала очень быстро. Но стоило добавить 5-й, как всё начинало жутко тормозить.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[3]: Возможности встроенного отладчика Visual C++
От: Polosaty Беларусь  
Дата: 15.03.04 18:37
Оценка:
Здравствуйте, Alexander Shargin, Вы писали:

P>>Интересно, зачем отладчик Visual использует эти регистры? Насколько я понимаю, эти 4 аппаратных точки останова являются брейкпоинтами по доступу к памяти. Насколько я знаю, отладчик Visual не поддерживает такие брейкпоинты, а все, что он умеет — это трассировать и вставлять инструкцию int3. И вообще, он является обычным отладчиком процессов 3-го кольца.

P>>Или я не прав?

AS>Отладчик Visual C++ умеет ставить брейкпоинты на доступ к памяти (о чём подробно рассказано в статье


Да, действительно, извините. Правда, чтобы этим пользоваться, нужно еще разобраться, как правильно описывать контекст переменных, но это уже совсем другая история...
Re: Возможности встроенного отладчика Visual C++
От: siv Украина  
Дата: 11.04.05 15:17
Оценка:
Уточнениею
Для VS 7.1 свою форматирующую DLL нужно копировать не к autoexp.dat файлу, а к devenv.exe !!!
Re: [SOLVED] [ExecutionControl] ???
От: Roman Odaisky Украина  
Дата: 06.09.06 10:43
Оценка: 4 (1)
Здравствуйте, giv, Вы писали:

giv>Пытался я под 7-мой студией (а если точнее — и под 7 и под 7.1 — то бишь MSVS.NET 2002 и MSVS.NET 2003, соответственно) использовать эту секцию, но никакого видимого результата не заметил. Хотя под MSVC 6.0 все работает прекрасно...


http://www.cprogramming.com/debugging/visual-studio-msvc-debugging-NoStepInto.html
До последнего не верил в пирамиду Лебедева.
Re: Возможности встроенного отладчика Visual C++
От: RikkiTikkiTavi Россия  
Дата: 14.11.08 09:20
Оценка:
Никак не хочет работать $ADDIN для моей структуры
VS 2005.
Повторяю пример один в один.

Может кто подскажет?
Re[2]: Возможности встроенного отладчика Visual C++
От: CreatorCray  
Дата: 14.11.08 11:47
Оценка:
Здравствуйте, Polosaty, Вы писали:

P>Насколько я понимаю, эти 4 аппаратных точки останова являются брейкпоинтами по доступу к памяти.

Еще по исполнению инструкции по конкретному адресу и по записи в порт брякаться умеют
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.