Hi,
in case you don't have VS code, you can also run GDB directly
https://wiki.gnuradio.org/index.php/TutorialsDebugging#Tutorial:_Using_gdb_with_Pythonic_GR_applications
Yours
Martin
On 03/08/2021 15:48, Josh Morman wrote:
> Hello!
>
> 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",
> "type": "cppdbg",
> "request": "launch",
> "program": "/usr/bin/python3",
> "args": ["/path/to/grc_output.py"],
> "stopAtEntry": false,
> "cwd": "${workspaceFolder}",
> "environment": [],
> "externalConsole": false,
> "MIMode": "gdb",
> "setupCommands": [
> {
> "description": "Enable pretty-printing for gdb",
> "text": "-enable-pretty-printing",
> "ignoreFailures": true
> }
> ]
> },
> 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.
>
> Josh
>
>
>
> On Tue, Aug 3, 2021 at 8:41 AM 能书能言 <2127629883@qq.com
> <mailto:2127629883@qq.com>> wrote:
>
> Hi guys!
> 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?
> Sincerely
>
No comments:
Post a Comment