R 中是否有任何软件包和/或 hack 可以为调试器提供更多功能?我专门寻找:
- 能够跳过整个循环
- 无需调用即可单步执行函数调用的能力
debug
对他们也
- 设置断点或有效插入的能力
browser
当我已经在调试器中时调用代码(也就是说,如果我在调试过程中找出我想要断点的位置,我就不必退出并再次重新运行整个函数)
Etc.
编辑时:我在 emacs/ess 中运行 R,所以如果有任何 ess 技巧可以提供帮助,我也会对此感兴趣。
This is called ess-tracebug. This and a bunch of other functionality for development is available on C-c C-t ess-dev-map. Press C-c C-t C-h to see what is there It should be self explanatory.
看到这个section http://ess.r-project.org/Manual/ess.html#Developing-with-ESSess手册和原始项目页面ess-tracebug https://code.google.com/p/ess-tracebug/对于基本的东西。有多种可用的断点类型,您可以添加自己的断点并使它们执行任意 R 代码。错误操作和记录器也是如此。
还有一个tutorial https://code.google.com/p/ess-tracebug/wiki/GettingStarted there.
至于你的观点。
默认情况下你不能跳过整个循环(据我所知,R 不允许这样做)。但是您可以使用 M-N 跳过多次迭代,或者在循环后放置一个断点,并在遇到循环时运行 M-C(不过您需要提前 eval/source )。还有M-U跳转到外层调用框架。
Yes, C-c C-t C-d to mark whatever function or method you want for a debugger. It is smart enough to also show internal/namespace functions visible from the current debugging context. See here https://code.google.com/p/ess-tracebug/#Flag/Unflag_for_Debugging for how it looks.
您可以按照上面 (2) 中的方式标记函数进行调试,或者插入断点并评估函数。评估的效果取决于你如何做。如果它是一个简单的评估(如 C-c C-c),那么该函数将被引入到当前上下文中,这可能是您想要的,但很可能不是。如果开发人员处于活动状态并且该函数是已开发包的一部分,则评估将在命名空间/包级别进行,因此您将立即安装断点。
You can also toggle breakpoints with C-c C-t o. The effect is immediate, you won't need to source/evaluate your function again.
To conclude, C-c C-t C-d is probably the cleanest way to debug a function/method if you already in the debugging context. Otherwise, just set a breakpoint and evaluate/source the code.
将来可能会添加动态断点,但它会增加额外的复杂性,而在我看来并没有太多收益。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)