Even though GNU Radio has python bindings with swig or pybind11, the
underlying code c++ symbols are still accessible with GDB. Using Visual
Studio Code and GNU Radio compiled from source with Debug Symbols this
is pretty straightforward:
1) Open up the source tree of gnuradio in visual studio code
2) edit the launch.json and add a C++/GDB configuration where program is
python and args is the output of the GRC rendering
"name": "(gdb) Launch",
"description": "Enable pretty-printing for gdb",
3) put the breakpoint where you want to hit - note that GR will have
been compiled with optimizations, so the breakpoints might be a bit funky
4) F5 to run the application
If you are debugging your own OOT, this makes it even simpler because
you can compile as "-DCMAKE_BUILD_TYPE=Debug" and then your breakpoints
will be very predictable - in this case you just open up VS code from
the root of your project and follow the same steps.
Hope this helps.
On Tue, Aug 3, 2021 at 8:41 AM 能书能言 <firstname.lastname@example.org
I want to know how to debug c++ code in gnuradio. As far as I know,
after we run GRC, a Python file will be generated. The Python file
connects various blocks, but if I debug this Python file directly, I
cannot observe the internal operations of the C++ block. I want to
know if there is any way to let me Can I see the contents of the
c++work function when I run the python file? It's like executing a
pure Python or pure C++ program.
If this is not possible because of the swig connection method, how
can I observe the work of a C++ block's work function? If I look at
the code directly, it is definitely not accurate enough. Can I write
a demo by myself? Or other ways.
In addition, how to edit an existing block? I just want to modify
its function slightly. Do I have to use gr_modtool to create a new
OOT module and rewrite it based on the contents of the original
block? You must also use debugging methods when writing, but I don't
know how to do it.
in addition. I have tried the tutorials on the official website, but
none of them worked. I also checked the previous mailing list, but
it was not very helpful. I think anyone has a better solution?