Skip to content

Error when debugging R functions on a remote machine #1057

Open
@dapritchard

Description

@dapritchard

Sometimes when working on a remote machine when I flag an R function for debugging (using e.g. ess-debug-flag-for-debugging) and then run the function, I get an error such as error in process filter: ess-r-package-source-dirs: Opening directory: No such file or directory, /share/projects/P0025, and the tracebug visual debugging tools don't work (although the usual R debugger is still functional). The stack trace looks like the following.

Debugger entered--Lisp error: (file-missing "Opening directory" "No such file or directory" "/share/projects/P0025")
  directory-files-and-attributes("/share/projects/P0025" t "\\`[^.]")
  ess-r-package-source-dirs()
  ess--dbg-find-buffer("/share/projects/P0025/R/analy-utils.R")
  ess--dbg-create-ref-marker("/share/projects/P0025/R/analy-utils.R" "8" nil)
  ess--dbg-goto-ref(inferior-ess-mode "/share/projects/P0025/R/analy-utils.R" "8" nil)
  apply(ess--dbg-goto-ref inferior-ess-mode ("/share/projects/P0025/R/analy-utils.R" "8" nil))
  ess--dbg-goto-last-ref-and-mark(#<buffer  *ess.dbg.R:2*> inferior-ess-mode)
  inferior-ess-tracebug-output-filter(#<process R:2> "debugging in: create_target_subgroup_nms()\ndebug at /share/projects/P0025/R/analy-utils.R#8: {\n    target_nms <- create_target_nms()\n    subgroup_nms <- c(\"full\", \"agegt75\", \"recentfrac\", \"beforeoct2015\", \n        \"afteroct2015\")\n    subgroup_regexes <- setNames(paste0(\"analybase_\", subgroup_nms), \n        subgroup_nms)\n    map(.x = subgroup_regexes, .f = grep, x = target_nms, value = TRUE)\n}\n")

I believe that this error is a result of some confusion between strings specifying remote and local paths. In ess-r-package-source-dirs, the value of pkg-root is assigned to a string providing a local path for the project root (as determined by ess-r-package-info). Then when the directory-files-and-attributes function takes this path as an input it looks for the directory on the local machine and if it doesn't exist then it throws an error.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions