Как использовать контрольные точки в F # interactive?
Я начал изучать некоторые идеи в алгоритмах, используя VS2010 и F # interactive.
Итак, я создал DebugScript.fsx
, я пишу там какой-то код и в конце концов отправляю его в F # Int, чтобы проверить его.
В какой-то момент мне нужно поймать ошибку. Но я не могу разместить точку останова даже в простом цикле for
:
for i in stringarray do
printfn "%s" i
Когда я нажимаю F9 для установки точки останова, VS показывает красный круг с предупреждающим знаком. Подсказка для этого: "В настоящий момент точка останова не будет удалена".
Конечно, я открыл меню Debug → Прикрепить к процессу... → Fsi.exe ранее
Я попытался разместить Debugger.Break()
внутри цикла, но это единственная строка, в которой отключен отладчик, и не дает мне возможности продолжать отлаживать строки внутри цикла. У меня также нет локальных переменных: (
Может, мне что-то не хватает?
Ответы
Ответ 1
Вы не можете отлаживать код, который является частью ваших сценариев, но вы можете отлаживать внешний код, на который ссылаются ваши скрипты, прикрепляя отладчик к процессу Fsi.exe, как вы описываете.
Поэтому, если вы действительно хотите отлаживать из интерактивного окна без необходимости писать консольную программу, вы можете создать файл fs с функцией для отладки и:
(*) работал над моей установкой VS Ultimate, но я не смог воспроизвести на другой машине с установкой VS Shell
Ответ 2
в VS2015 теперь намного проще: в Tools- > Option- > F # tools → F # interactive- > Debugging → Enable script debugging = True
затем reset ваш интерактивный сеанс, и если вы хотите отлаживать, нажмите CTRL + ALT + D
и отправить команду как обычно
(или щелкните правой кнопкой мыши на исходном файле и выберите "debug in interactive" )
Ответ 3
Насколько я знаю, нет никакого способа сделать это. Вместо этого вы захотите использовать файл .fs и начать отладку в Visual Studio.
Ответ 4
В дополнение к ответу kvb: Можно сказать, что F # Interactive уже является типом отладчика. Вы можете кормить код по строкам (или по регионам) и видеть промежуточные результаты. Вы также можете проверить значение привязок, просто оценив их в консоли F # Interactive.
Ответ 5
интерактивен для подачи небольших фрагментов кода и оценки промежуточных результатов, подумайте об этом как о тестировании микроустройства. У меня был некоторый успех с использованием nunit с f #, это ничем не отличается от С#, вы так же украшаете свою тестовую и тестовую версии, и она будет загружаться. У меня были некоторые проблемы с сборками в смешанном режиме, где nunit будет barf, но в целом, это лучший способ imho протестировать кусок кода. Кроме того, я не видел способа отправить пространство имен в интерактивные, только модули.