Мой IDE Visual Studio 2008 ведет себя очень причудливым способом при отладке модульного теста: у Меня есть точка останова и когда я поразил ее и затем пытаюсь ступить с F10, тест завершает. Если я Устанавливаю, устанавливает контрольные точки на каждой строке в методе, протестированном, я закончу в случайном, не следующем на следующей строке. Я убрал и восстановил решение после чистого системного перезапуска. Поведение сохраняется. Имеет кого-либо еще, испытал это, и прийти к выводу.
Этот тест только использовал основной поток выполнения (никакие дополнительные потоки не создаются),
Был выпущен исправление пост VS2008 SP1, который решает количество проблем отладки. Статья КБ здесь , исправный экран здесь .
ОБНОВЛЕНИЕ: ОСНОВНОЕ СКАЧАТЕЛЬНОЕ СКАЧАНИЕ было на пенсию, я не знаю о местонахождении альтернативных загрузок. Пожалуйста, отредактируйте этот пост, если вы найдете один.
Такое поведение происходит, если вы отлаживаете сборку выпуска (поскольку строки оптимизируются).
Это также случалось со мной в прошлом, если я случайно отлаживаю более старый exe где-то в другом месте (как установлено конфигурацией проекта), вместо последней сборки; ^)
У меня были похожие проблемы с VS 2003. Оказалось, что я использовал неправильные символы, поэтому их нельзя было привязать к правильному источнику.
Убедитесь в следующем:
ps попробуйте разместить DebugBreak (); функция в обоих методах (если этот код не выполняется внутри какого-либо цикла, поэтому это может расстраивать). Это должно привести к завершению вашего процесса, когда выполнение достигнет любой из этих функций (чтобы вы могли продолжить отладку из этого конкретного места).
Даже в сборке отладки оптимизация компилятора может объяснить это поведение. Под свойствами проекта «Build», убедитесь, что CheckBox 'Optimize Code' выключен. Я видел, как это включено по умолчанию после обновления определенных проектов от .NET 1.1.
F10 - это шаг в течение , F5 продолжается до следующей точки останова, F11 является шагом, который выполняет следующую строку кода, затем ждет. Это то, что вы, вероятно, ищете.
Такое поведение также происходит, когда у вас есть несколько потоков.
Среда разработки Arduino написана на Java.
Но стандартный язык, на котором вы пишете программу для платформы Arduino, - это фактически C++.
Платформа Arduino основана на чипе Atmel AVR. Существует по крайней мере одна виртуальная машина Java для чипсов AVR . Есть и другие языки, доступные для AVR, такие как Forth и BASIC (хотя я мог найти только коммерческие версии, поэтому, если вы хотите их найти, найдите «AVR BASIC»).
Arduino использует виртуальный COM-порт для связи между хост-компьютером и ним. Виртуальный COM-порт эмулирует последовательную линию старого стиля, но выполняется с помощью USB. Для обмена данными с физическим устройством можно использовать Java communication API .
-121--1861456- После игры с Reflector я пришел к выводу, что автор этой записи в блоге (и сам автор GLEE/MSAGL) использовал бета/альфа/версию программного обеспечения, которая имела поддержку изображений в качестве узлов.
MSAGL использует Bitmap
для загрузки изображений, и быстрый анализ библиотеки GLEE показывает, что только сборка Microsoft.Glee.GraphViewerGdi
зависит от System.Drawing.Bitmap
. Кроме того, класс GraphAttr
был бы наиболее вероятным занимать место для такой функции, и я не вижу там ничего, что могло бы быть даже удаленно (т.е. с использованием какого-то странного взлома;)), используемого для обработки изображений.
Кроме того, обратите внимание, что исходный фрагмент, предоставленный автором, не полностью соответствует API, отображаемому в версии, загружаемой с сайта MS (1.2.0.0).
Помещаете ли вы точки останова в код, являющийся частью созданного класса?
Я столкнулся с этой проблемой на клиентском сайте ссылки на службу. Сгенерированные классы являются частичными классами с примененным атрибутом
[System.Diagnostics.DebuggerStepThroughAttribute()]
. Даже когда моя точка останова была в другом файле, но все же была частью приписанного класса, точка останова была бы пропущена.
Я удалил этот атрибут из созданного файла Reference.cs, и отладчик работал так, как я ожидал.
Конечно, это не постоянное решение, потому что если Reference.cs файл регенерируется, атрибут возвращается обратно.
Это может быть так же просто, как и в случае с фреймворком тестирования, не загружающим ту же самую сборку, над которой вы сейчас работаете. Такое случалось в редких случаях в NUnit, который работает с копией тестируемой вами сборки, иногда переставая копировать последнюю версию. Ваши точки останова украшены индикатором "символы не загружены"?
.Зайдите в Проект-> Свойства и снимите флажок «Оптимизировать код»
Это тот случай, если вы видите такой код, как DataSet ds = new DataSet (); попадает в отладчик, но код выглядит как строка Test = "Test"; пропускается.