Я работаю в VS 2008 и имею три проекта в одном решении. Я отлаживаю, присоединяясь к процессу .net, вызванному сторонним приложением (SalesLogix, приложение CRM).
После того, как он подключился к процессу, и я пытаюсь установить точку останова в одном из проектов, он не устанавливает точку останова в этом файле. Фактически он переключает текущую вкладку на другой файл в другом проекте и устанавливает точку останова в этом документе. Если файл не открыт, он даже открывает его для меня. Я не могу этого объяснить. Понятия не имею. Кто-нибудь видел такое странное поведение? Я бы не поверил, если бы сам не видел.
Еще немного информации: если я устанавливаю точку останова перед подключением, она показывает «красную точку» и говорит, что символы не загружены ... нет проблем ... Я так и ожидал. Когда я подключаю и вызываю свой .net-код из SalesLogix и переключаюсь обратно на VS, моя точка останова полностью исчезает (даже не предупреждение о том, что источник не соответствует файлу отладки). Когда я пытаюсь вручную загрузить файл отладки, я получаю сообщение о том, что файл символов не соответствует модулю. .Pdb и .dll имеют одинаковые отметки времени, поэтому я в тупике.
У кого-нибудь есть идеи?
Спасибо,
Джефф





Я видел эту функциональность в более старых версиях VS.Net (кажется, 2003). Возможно, он все еще существует в текущих версиях, но я с ним не сталкивался. Кажется, что файлы с одним и тем же именем, даже в разных каталогах, сбивают с толку VS.Net, и это приводит к установке точки останова в файле с тем же именем. Может произойти только в том случае, если классы в файле также имеют одно и то же имя. Думаю, хватит и пространств имен.
Вы также можете проверить конфигурацию сборки, чтобы убедиться, что все проекты действительно создаются в режиме отладки. Я знаю, что меня пару раз ловили, когда конфигурация решения каким-то образом менялась, а некоторые проекты не компилировались в режиме отладки.
Кибби, ты был прав! Это были два файла с одинаковым именем в разных папках. Я устанавливал точку останова в правильном файле в строке 58 - она помещала точку останова в другой файл в строке 58. Я, наконец, смог установить точку останова, используя «Отладка -> Новая точка останова -> Прерывание функции». Имя »и введите имя моей функции. Он остановился точно так, как должен был тогда.
Я согласен - хватит и пространств имен, не так ли? Чертова штука обошлась мне в пару часов. О, ну ... по крайней мере, это решено, и я знаю почему.
Спасибо за ответ и спасибо Мэтту за его ответ!
Строка, в которой вы устанавливаете точку останова при вызове метода / функции? Возможно, функция была встроена, поэтому VS достаточно умен, чтобы установить точку останова в самом методе.