2010-09-01 3 views
2

У меня есть R скрипт, который обычно запускается из командной строки с аргументами:Как запустить R-скрипт с подключенным gdb?

./script.R --width=10 

Он использует Rscript в качестве переводчика:

#!/usr/bin/env Rscript 

К сожалению, это дает мне ошибку сегментации, когда он выполняет свой скомпилированный C кода в R, используя .C("compiled_function").

Так как я могу запустить мой скрипт R с приложением отладчика gdb?

Rscript, по-видимому, не знает вариант -d.

Я попробовал этот

R -d gdb --vanilla --args --width=10 < script.R 

Но это не сработало, так как он прошел --width=10 в отладчик. Каков правильный звонок?

Может быть, я должен начать R интерактивно:

$ R -d gdb --vanilla 

Но тогда я не знаю, как source мой сценарий и передать аргументы (--width=10).

ответ

2

Я думаю, что общее соглашение GNU getopt заключается в использовании -- для обозначения оставшихся аргументов. Так что попробуйте

R -d gdb --vanilla -- --width=10 < script.R 

Else hardwire значение аргумента в вашем скрипте или скомпилированной функции.

+0

Когда я пытаюсь, по какой-то причине, R-код в script.R интерпретируется gdb, что является беспорядком. Должен быть способ назвать это, не устанавливая значения аргументов в моем скрипте (у меня на самом деле довольно много аргументов, а не только то, что я дал в примере). – Frank

+0

Тогда не используйте перенаправление. Запустите 'R -d gdb' и выполните' source («script.R») 'вместо. –

+0

Но как я могу передать параметры скрипту? Если я просто скажу «source (« script.R »), он будет жаловаться, что значения (« ширина »и т. Д.) Не установлены. – Frank

Смежные вопросы