|
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 |
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 code2) 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 funky4) F5 to run the applicationIf 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.JoshOn 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
[Prev in Thread] | Current Thread | [Next in Thread] |