Поддерживают ли какие-либо среды R условные точки останова? - PullRequest
14 голосов
/ 05 марта 2012

Какие, если таковые имеются, R IDE (например, StatET, Revolution R, RStudio, ESS, NppToR и другие) поддерживают условные контрольные точки?

Это доступно через bp в пакете debug, иличерез дополнительный бит кода, который вызывает browser() в зависимости от условия.Однако может быть более эффективно иметь возможность переключения конкретной строки # и быстрого ввода условной точки останова для этой конкретной строки без дополнительных действий кода или консоли.


Примечание 1. Я имеюнемного их искал, и кажется, что условные точки останова недоступны в RStudio, и я думаю, что то же самое может быть верно и для StatET.Кажется, есть поддержка в ESS (см. на этой странице ), хотя я еще не знаком с ess-tracebug и с тем, насколько легко его использовать.Также кажется, что это работает только для более старых версий ESS;Я еще не знаком с функциональностью более поздних версий.


Обновление 1. Я выбираю ответ (единственный - у Андре).Вопрос был ответным относительно того, поддерживает ли любая IDE условные контрольные точки, и, к счастью, Андри продемонстрировал, что существует решение.Я по-прежнему заинтересован в любых других IDE, которые поддерживают это, хотя Eclipse пока достаточно хорош.(На данный момент я предпочитаю Rstudio, но это уже есть в их списке запросов функций.) Если кто-то имеет опыт в ESS и может продемонстрировать эту функциональность, я уверен, что это пойдет на пользу другим, кто сталкивается с этим вопросом.

Ответы [ 3 ]

9 голосов
/ 05 марта 2012

Да, это возможно с Eclipse + StatET 2.0 в R 2.14-1.

Eclipse поддерживает условную отладку, а StatET 2.0 поддерживает визуальную отладку (если у вас достаточно недавняя отладка)версия R.)

Предполагая, что вы знакомы с Eclipse, выполните следующее:

  • Запустите сеанс отладки в Eclipse (то есть вызовите конфигурацию Debug, а не конфигурацию Run)
  • Установите точку останова в вашем коде
  • Откройте перспективу отладки
  • Запустите ваш код

С открытой перспективой отладки у вас будетпанель, содержащая вкладки для Variables / Breakpoints.На вкладке контрольных точек выберите контрольную точку, затем установите флажок Conditional / Expression и введите свое условие.

enter image description here

При поиске этого ответа я нашел следующие страницы полезными:

1 голос
/ 03 сентября 2016

В rstudio есть небольшая хитрость для установки условной точки останова:

for(i in 1:10){
  if(i==5){
    print("set the breakpoint at this line by shift+f9")
  }
  i*i
}

Единственный недостаток - вам нужно добавить дополнительный код

0 голосов
/ 18 октября 2013

Предварительный выпуск RStudio v0.98 имеет эту функцию: http://www.rstudio.com/ide/docs/debugging/overview

Единственный недостаток - ваша функция должна находиться в одном файле с вашим основным кодом, если вы хотите установить точку останова в своей функции.

...