如何在R中打破C源代码?

时间:2015-10-18 12:32:41

标签: c r

我想在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源代码构建和运行。如何设置断点?

2 个答案:

答案 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

现在,运行任何单因素方差分析实验来触发断点。