Visual Studio 2008 сумасшедший пропуск отладчика! - PullRequest
7 голосов
/ 01 октября 2009

Что, черт возьми, может быть причиной этого ...

Я занимаюсь разработкой своего веб-приложения ASP.NET MVC на C # 3.5, так же, как и каждый день. Ничего умного не делает, просто стандартные методы на классах, вызывающие другие методы ...

Я строю свой проект, запускаю URL в Chrome и получаю ожидаемый ответ. Я прикрепляю отладчик к w3wp.exe, устанавливаю точку останова и f5 в Chrome. Отладчик останавливается на точке останова, как я и ожидал ....

Я нажимаю клавишу f11, чтобы пройти по коду, и он переместится на следующую строку / строку детали, сделаю это несколько раз, и он случайно перейдет к произвольной строке в пути выполнения !!!

Строка, к которой она пропускает, является строкой, которая была бы выполнена, она не пропускает ни одной старой строки, она просто решает пропустить целую кучу строк между ?? !!!

Я никогда не видел этого раньше, как, черт возьми, я отлаживаю, что происходит ???

Некоторое время я думал, что, возможно, Chrome делает два запроса, и отладчик на самом деле не пропускает его, он просто переключается между потоками запросов, заставляя его выглядеть как прыгающий, но это не так! Если я устанавливаю точку останова в каждой отдельной строке, я могу частично предотвратить это, но принять следующее:

1. public string Method()
2. {
3.     string s;
4.     s = OtherMethod();
5.     return s;
6. 
7. }

тип поведения, которое я вижу (с точкой останова на каждой строке выше) 1,2,3,4,5,6,7 (т. Е. Оно не вступит в OtherMethod ();

Другое поведение, которое я вижу, - это 1,2,3, и затем оно возвращается туда, где вызывается метод () или даже дальше: s

Спасибо

Ответы [ 6 ]

6 голосов
/ 01 октября 2009

Вы пытались очистить свой раствор?
- (папки bin и obj в папке вашего проекта)

Удалить файлы из папки временных файлов asp.net?

  • (обычно C: \ windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Временные файлы ASP.NET)
  • Возможно, вам сначала потребуется запустить «iisreset / stop» в командной строке, а затем повторно включить с помощью iisreset / start
3 голосов
/ 03 мая 2010

Эй, вы, наверное, уже нашли решение этой проблемы, но многие (я был один) все еще борются с этим. Это проблема VS 2008, и это исправление должно быть применено:

http://support.microsoft.com/?scid=kb%3Ben-us%3B957912&x=9&y=14

2 голосов
/ 01 октября 2009

Не уверен, поможет ли это. Ранее я сталкивался с проблемами, когда скомпилированный код в связанной сборке не совпадает с тем, что думает отладчик. Я всегда решал, как сначала отключить VS, затем перезапустить и перезагрузить проект, а затем полностью перестроить решение. Затем измените режим сборки с debug-> release или release-> debug и выполните одну последнюю перестройку. Я, честно говоря, никогда не понимал, что вызывает это. Случается только в некоторых случаях.

0 голосов
/ 01 октября 2009

Включите разборку и посмотрите, имеет ли смысл ваш шаг. Если вы уверены, что не перепрыгиваете между потоками, то компилятор, вероятно, решил, что часть вашего кода недостаточно важна, чтобы перейти (т.е. ничего не делает).

0 голосов
/ 01 октября 2009

Я видел нечто подобное в 2.0, когда я не уверен, что мой кеш браузера чист.

0 голосов
/ 01 октября 2009

Звучит так, будто вы пытаетесь пройти через оптимизированный бинарный файл. Оптимизатор может делать много вещей, которые затрудняют отладку, включая, но не ограничиваясь:

  • Изменение порядка заявлений
  • Встроенные функции
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...