Hi Ivan, This is a very nice point. I will check this out.
Thanks and regards, On Sat, Dec 17, 2022 at 1:53 PM Ivan Krylov <krylov.r...@gmail.com> wrote: > > On Sat, 17 Dec 2022 05:02:33 +0530 > Christofer Bogaso <bogaso.christo...@gmail.com> wrote: > > > I am using an R package where there are some C++ code. > > > > To check some intermediate values generated by that C++ code, I added > > a line like > > > > std::cout << "My values"; > > A more efficient way of debugging C++ code running under R could be > with the use of a C++ debugger. For example, > > 0) Make sure you have GDB (or a different debugger, e.g. lldb on a Mac) > installed. You probably do, since you already have a working C++ > toolchain. > > 1) Run R using the command line: R -g gdb. The debugger will start and > wait for your commands. Type: run. This will start R. > > 2) Type library(YOUR_PACKAGE_NAME) to load the package. You don't have > to do it in this order (GDB can remember to set a breakpoint on a > function that's not yet loaded in the address space), but this way you > can be sure about the name of the function. > > 3) Press Ctrl-C, sending an interrupt to the application. GDB handles > the interrupt and presents you with its prompt again. Type: > break YOUR_FUNCTION_NAME. If the function name is right, GDB will tell > you that a breakpoint is set. If not, it will ask you whether to > postpone setting a breakpoint until the function shows up. Since the > shared library should have been loaded by this time, the correct answer > would be probably "no". > > 4) Type: continue. The debugger will give the control back to R. You > can press Enter once and see R print the prompt symbol (">") again. Run > your code that uses the package. > > 5) Eventually, you'll hit the breakpoint and find yourself in the > debugger again. Like in the R browser, you can use "n" to step line by > line, "s" to step inside function calls, and "c" to continue execution > uninterrupted. You can also use "bt" and "frame NUMBER" to inspect the > call stack and "print EXPRESSION" to see the values of various objects. > > A longer guide to GDB can be found at <https://beej.us/guide/bggdb/>. > Telling GDB where the package source code is [*] will ease the process > even further, as would obtaining debugging symbols and the source code > for R itself. > > -- > Best regards, > Ivan > > [*] > https://sourceware.org/gdb/onlinedocs/gdb/Source-Path.html > https://alex.dzyoba.com/blog/gdb-source-path/ ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.