Подтвердить что ты не робот

Как использовать контрольные точки в 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() внутри цикла, но это единственная строка, в которой отключен отладчик, и не дает мне возможности продолжать отлаживать строки внутри цикла. У меня также нет локальных переменных: (

Может, мне что-то не хватает?

4b9b3361

Ответ 1

Вы не можете отлаживать код, который является частью ваших сценариев, но вы можете отлаживать внешний код, на который ссылаются ваши скрипты, прикрепляя отладчик к процессу Fsi.exe, как вы описываете. Поэтому, если вы действительно хотите отлаживать из интерактивного окна без необходимости писать консольную программу, вы можете создать файл fs с функцией для отладки и:

  • Прикрепите отладчик

  • В любом

    • ссылается на файл fs с помощью #load (*)
    • скомпилируйте код как библиотеку и обратитесь к полученной DLL с помощью #r
  • Установить точку останова

  • Вызвать функцию из script

(*) работал над моей установкой 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 протестировать кусок кода. Кроме того, я не видел способа отправить пространство имен в интерактивные, только модули.