5

我正在调试R使用该Rcpp框架的库的 C++ 共享库 (DLL)。

我在 Windows 上并gdb用于调试(通过 安装的版本Rtools)。

我通过推荐的命令开始调试:

gdb Rgui.exe --silent

我的问题:似乎RGui捕获了由RcppR“打印”函数创建gdb的所有输出stdout并将其显示在RGuiR 控制台而不是gdb控制台(终端)中:

(gdb) call dbg_print(df)

在此处输入图像描述

如何将输出“重定向”到gdb控制台?

PS 1:我在 RGui 首选项中找不到此设置

PS 2:这是dbg_print函数的代码:

void dbg_print(DataFrame df) {
  Rcpp::print(df);
}

// Calls R's print function:
// inline void print(SEXP s) {
//    Rf_PrintValue(s);           // defined in Rinternals.h
// }

另请参阅核心 R的源代码Rf_PrintValue

编辑1: Rgui.exe没有为输出重定向提供明显的开关:

在此处输入图像描述

编辑 2:我很确定R 打印到标准输出

R 中的所有打印都是通过函数 Rprintf 和 REprintf [...]

Rprintf 写入标准输出。由 sink() 函数重定向,适用于普通输出。

REprintf 写入标准错误,对错误消息和警告很有用。它不是由 sink() 重定向的。

编辑 3: @duckmayr 向我指出了一个名为 R_WriteConsole 的 R 回调函数(在 C 中),该函数可用于注册我自己的打印例程以将 R 输出重定向到gdb控制台(stdout)。我正在寻找更多这样的示例代码......

4

0 回答 0