При отладке в среде MSVC2015 (Community Edition) Update 3 — нет останова на breakpoint.
Проект на C++ типа UnitTest.
Отладку запускаю через меню: Test/Debug/...
Далее — окно с сообщением о недоступности сырцов (Source Not Available)...
При этом:
a) всё собрано под Debug;
b) проведена полная пересборка проекта (и не раз);
c) тот же самый проект в среде MSVC2013 (CE) Update 5 — работает как часы (останов на брекпойнтах есть).
Project — Debug x86; Platform Toolset — Visual Studio 2015 (v140).
Точка останова — В МОЁМ КОДЕ, файлы которого включены в проект.
ОС: Windows 7/64 (SP1).
Лично я грешу на кривые ручки индусов в M$
В чём здесь может быть проблема?
У меня оно все нормально работает.
"нет останова на breakpoint" и "окно с сообщением о недоступности сырцов (Source Not Available)" это совсем не одно и то же.
Скорее всего ваши тесты валятся на этапе инициализации где-то в системных библиотеках (для которых не удается найти исходники).
Посмотрите стек вызовов.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Удалось самому разобраться в проблеме:
в настройках — меню Tools/Options
в секции Debugging/Symbols
текстовый бокс "Cache symbols in this directory:" — должен быть пустой (нажать кнопку — "Empty Symbol Cache")
Зря я боялся насчет индусов в M$
P.S. Вполне допускаю, что здесь у меня были некорректные настройки — что и приводило к вышеописанной проблеме.
Здравствуйте, VTT, Вы писали:
VTT>У меня оно все нормально работает. VTT>"нет останова на breakpoint" и "окно с сообщением о недоступности сырцов (Source Not Available)" это совсем не одно и то же. VTT>Скорее всего ваши тесты валятся на этапе инициализации где-то в системных библиотеках (для которых не удается найти исходники). VTT>Посмотрите стек вызовов.
Есть тут два момента:
Во-первых, данный проект нормально отрабатывал у меня на 2013 студии;
Во-вторых, у моих коллег — он также нормально работал и на MSVC2015.
З.Ы. Ларец просто открывался — подробности я указал ниже.
Теперь всё работает у меня и на MSVC2015
Здравствуйте, AlexGin, Вы писали:
AG>Удалось самому разобраться в проблеме: AG>в настройках — меню Tools/Options AG>в секции Debugging/Symbols AG>текстовый бокс "Cache symbols in this directory:" — должен быть пустой (нажать кнопку — "Empty Symbol Cache")
Да, PDB хранят полный путь к сырцам, из которых собраны. Что может заставить машину думать, что сырцов нет, если путь изменился или не совпал (недавно аналогично обломался при апгрейде — сырцы переехали из диска C: на D:, вся прочая структура папок друг относительно друга осталась той же, но PDB имели в себе пути на старый диск, поэтому все бряки на 3rd party отвалились разом).
AG>Зря я боялся насчет индусов в M$
Не зря, не зря. Абсолютный путь в PDB — зло, особенно при нескольких уровнях зависимостей либ друг от друга. Все эти костыли с alt path — именно костыли.