如何在不重新编译的情况下添加断点来调试R包
当我开发一个R包时,我会做以下事情:如何在不重新编译的情况下添加断点来调试R包,r,r-package,R,R Package,当我开发一个R包时,我会做以下事情: 加载最新版本 使用它 意识到说函数“f_bug”中有一个bug 试着调试 如果我可以“重新编写”f_bug,并且选择新的源代码版本(我会在后面重新编译干净的包),我会很容易 但是我不能这样做,看起来在另一个包函数中调用时,package::f_bug在默认情况下总是“选中”的 我可以做这样的事情吗?您不能使用RStudio方便的图形断点,但您可以使用跟踪来做同样的事情: trace(package::f_bug, browser, at = insertio
package::f_bug
在默认情况下总是“选中”的
我可以做这样的事情吗?您不能使用RStudio方便的图形断点,但您可以使用
跟踪来做同样的事情:
trace(package::f_bug, browser, at = insertion_point)
此处插入点不是指行号,而是指子步向量。从?跟踪:
查看“as.list(body(f))”以获取数字
与函数“f”中的步骤关联。)
另一个选项可能是使用utils::setBreakpoint
,它以文件名和行号作为参数。有关详细信息,请参阅帮助文件。重建后,您是否再次尝试加载它?!这就是我不想在每次设置断点时都重建它的要点!可能是从命令行:trace(package::f\u bug,browser,at=line\u您希望\u插入\u断点\u at)
ah!我会试试看,看起来不错。你能只跟踪一次吗?trace
会一直保持,直到你使用untrace
,我认为没有与debugonce
等效的方法。