我想在model.matrix的C实现中设置一个断点。我在How can I view the source code for a function?中尝试了Selva的解决方案:
> debug(C_modelmatrix)
Error in debug(C_modelmatrix) : object 'C_modelmatrix' not found
> debug(modelmatrix)
Error in debug(modelmatrix) : object 'modelmatrix' not found
我感兴趣的功能可以找到here。
SEXP modelmatrix(SEXP call, SEXP op, SEXP args, SEXP rho
我正在使用R源代码构建和运行。如何设置断点?
答案 0 :(得分:5)
Seth Falcon在how to debug R packages with native code上提供了仍然有用的视频教程,其中显示了这一点。
实质上,使用R
启动R -d gdb
以调用gdb
调试器,然后指示您在正确的位置设置断点。
如果您(或您的操作系统)更喜欢不同的编译器,那么<em>显然需要在调用中替换它:R -d lldb
。
答案 1 :(得分:2)
我认为Dirk的答案是完美的。请注意,OS-X不支持gdb,我们必须使用lldb。
> /bin/R -d lldb
> b modelmatrix
> r
现在,运行任何单因素方差分析实验来触发断点。