[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to debug GNU Radio's C++ program from source code?

From: Martin Luelf
Subject: Re: How to debug GNU Radio's C++ program from source code?
Date: Tue, 3 Aug 2021 16:09:00 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0


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


On 03/08/2021 15:48, Josh Morman wrote:

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.


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?

reply via email to

[Prev in Thread] Current Thread [Next in Thread]