discuss-gnuradio
[Top][All Lists]
Advanced

[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: Josh Morman
Subject: Re: How to debug GNU Radio's C++ program from source code?
Date: Wed, 4 Aug 2021 06:42:48 -0400

Step 1: Open the source tree in VScode. What does the source tree here refer to? A directory? I am using GNUradio built from source installation. Which directory should I open? Is it the one before or after the installation? Where is the source tree after installation?
-- source tree referring to the level of code where you clone it from github - https://github.com/gnuradio/gnuradio/  <-- at that level
-- the source tree is the same before and after installation, you just compile into a build/ directory and install the compiled libraries somewhere in /usr or a custom prefix.   But the source stays where it is

Step 2: Is the setting of "args" the absolute path of the Python program I want to debug?
-- Yes
Whether it can exist anywhere on the computer, but after I entered the path, the font turned red. Obviously, something went wrong.
-- be sure to enclose in double quotes for this json file

One last question: If I want to modify the function of an existing module, do I create a new OOT module and then copy the content of the original module to modify it?
-- that is one way to do it.  if it something that you are fixing within gnuradio and plan to push back to the main repo, then you can change things directly in the gnuradio source, but if it is just for experimentation or adding some non-standard functionality, OOT will save you some compile time and make it easier to debug.

Josh

On Tue, Aug 3, 2021 at 10:23 PM 能书能言 <2127629883@qq.com> wrote:
Hi,
Thank you very much for your suggestions, this is exactly what I want, I am a novice, do not have a lot of experience in program debugging, and there are some details I haven't figured out.

Step 1: Open the source tree in VScode. What does the source tree here refer to? A directory? I am using GNUradio built from source installation. Which directory should I open? Is it the one before or after the installation? Where is the source tree after installation?

Step 2: Is the setting of "args" the absolute path of the Python program I want to debug? Whether it can exist anywhere on the computer, but after I entered the path, the font turned red. Obviously, something went wrong.

One last question: If I want to modify the function of an existing module, do I create a new OOT module and then copy the content of the original module to modify it?
Sincerely


------------------ 原始邮件 ------------------
发件人: "Josh Morman" <jmorman@gnuradio.org>;
发送时间: 2021年8月3日(星期二) 晚上9:48
收件人: "能书能言"<2127629883@qq.com>;
抄送: "discuss-gnuradio"<discuss-gnuradio@gnu.org>;
主题: Re: How to debug GNU Radio's C++ program from source code?

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> 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


reply via email to

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