我正在尝试使用gdb以与视频中指定的相同方式调试R包中的已编译代码:https://vimeo.com/11937905和Writing R Extensions第4.4节。
这些消息来源说要使用该命令
启动R时R -d gdb
。但是,每当我尝试这样做时,我会收到一条消息,说WARNING: unknown option '-d'
并且R在正常条件下启动。
为什么不识别-d标志?我使用的是Windows 10。
答案 0 :(得分:0)
@MatthewLueder终于发现自己在Windows上进行调试无法像在Linux上进行调试。
中描述了一种方法 -d
中缺少R
参数的主要原因似乎是 Windows无法向进程发送信号来中断执行并将控制权传递给{{1 }})调试器:
因此,Windows上的R提供了一种使用gdb
而非RGui
的解决方法:
R
启动gdb /path/to/R-3.x.x/bin/x64/Rgui.exe
(gdb) run
后,您进入R外壳并可以加载软件包
包含要调试的DLL。
要设置调试的断点,您可以通过菜单项来中断R使其进入调试器,该菜单项仅在RGui
以RGui
开始的情况下可见:
现在,您可以通过gdb
在代码中设置断点,输入b a_function_name
继续执行R,在R中调用该函数并添加代码:c
显示断点命中和
您可以进行调试(逐步执行代码并打印变量值)。
PS:由于要查看gdb
中R变量或Rcpp
数据类型的当前值非常困难,因此我目前正在开发R包以改善R包中C ++代码的调试: https://github.com/aryoda/R_CppDebugHelper