Как использовать точки останова в F # интерактиве? - PullRequest
18 голосов
/ 07 сентября 2010

Я начал исследовать некоторые идеи в алгоритмах, использующих VS2010 и F # интерактивный.

Итак, я создал DebugScript.fsx, я пишу некоторый код и в конце концов отправляю его в F # Int для тестированияэто.

В какой-то момент мне нужно поймать ошибку.Но я не могу поместить точку останова даже в простой цикл for:

for i in stringarray do
    printfn "%s" i

Когда я нажимаю F9, чтобы установить точку останова, VS показывает красный кружок с предупреждающим знаком.Подсказка для этого: «Точка останова в данный момент не будет достигнута».

Конечно, я действительно открыл меню «Отладка» -> «Присоединить к процессу» -> Fsi.exe ранее

Я пыталсяпоместив Debugger.Break() внутри цикла, но это единственная строка, где останавливается отладчик, что не дает мне возможности продолжить отладку строк внутри цикла.У меня также нет доступных локальных переменных: (

Может быть, я упускаю что-то очевидное?

Ответы [ 5 ]

12 голосов
/ 15 марта 2017

в VS2015 теперь намного проще: в Инструменты-> Опция-> Инструменты F # -> F # interactive-> Отладка -> Включить отладку сценария = True

, затем сбросьте интерактивный сеанс и, если хотите,отладка, нажмите CTRL + ALT + D и отправьте команду как обычно

(или щелкните правой кнопкой мыши по исходному файлу и выберите «отладка в интерактивном режиме»)

12 голосов
/ 31 января 2012

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

  1. Прикрепить отладчик

  2. Или

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

  4. вызов функции из скрипта

(*) работал на моей установке VS Ultimate, но я не смог воспроизвести на другой машине с установкой VS Shell

2 голосов
/ 07 сентября 2010

Насколько я знаю, нет способа сделать это. Вместо этого вы захотите использовать файл .fs и начать отладку в Visual Studio.

1 голос
/ 07 сентября 2010

В дополнение к ответу kvb: можно сказать, что F # Interactive уже является разновидностью отладчика.Вы можете кормить код построчно (или регион за регионом) и видеть промежуточные результаты.Вы также можете проверить значение привязок, просто оценив их в интерактивной консоли F #.

0 голосов
/ 17 сентября 2010

интерактив предназначен для подачи небольших кусков кода и оценки промежуточных результатов, представьте его как микроблочное тестирование.у меня был некоторый успех с использованием nunit с f #, он ничем не отличается от c #, вы декорируете свои testfixture и test cases таким же образом, и он загрузитсяу меня были некоторые проблемы со сборками в смешанном режиме, когда nunit мешал, но в целом, это лучший способ imho протестировать кусок кода.Кроме того, я не видел способа отправить пространство имен в интерактивные, только модули.

...