Thanks for your detailed information.
I have done a lot of DSP programming in other environments but not in
gnuradio. So your wiki page is helpful. The reason I posted the question is
that, I was unable to get the log output in my screen with the following
codes in the work function:
{{{
// Do <+signal processing+>
for (int i = 0; i < noutput_items; i++) {
out[i] = in[i] * in[i];
int ret = do_some_signal_processing(d_len, &out[i]);
if (ret == 0) {
GR_LOG_DEBUG(d_logger, boost::format("Detected event on sample
%l%", i));
}
}
// Tell runtime system how many output items we produced.
return noutput_items;
}
int
detector0_impl::do_some_signal_processing(int len, float* out)
{
return 0;
}
}}}
Since every time do_some_signal_processing(int len, float* out) is called,
it returns 0. GR_LOG_DEBUG(d_logger, boost::format("Detected event on
sample %l%", i)) should be executed. But I couldn't see the output in my
screen. I was thinking I might have missed some setup in order to use
this GR_LOG_DEBUG
feature.
Thank you.
On Wed, May 30, 2018 at 3:49 AM, Müller, Marcus (CEL) <[email protected]>
wrote:
> Hi Linda,
>
> for debugging *programmatic* things (i.e. crashes, program doesn't
> calculate what I think it should), you'd use a debugger:
>
> https://wiki.gnuradio.org/index.php/TutorialsDebugging
> https://wiki.gnuradio.org/index.php/TutorialsGDB
>
> for debugging *algorithmic* things (i.e. I don't know why my receiver
> doesn't get the bits that I sent), well: That's mostly wireless comms
> engineering, and you would apply your domain-specific knowledge to
> that.
>
> Both aspects of debugging take experience, but you usually get better
> pretty quickly once you get started. Of course, especially the second
> one, is something that an education in communications technology does
> help a lot with – I don't know what you "are" by trade, but throw in
> whatever you've learned: It's often that we need to transform problems
> to forms of problems that we've learned to solve. :)
>
> The universal approach that works best for me is this:
>
> 1. Get pen, paper and a coffee (or whatever drink floats your boat)
>
> 2. Make a very rough block diagram of what you're implementing
>
> 3. Verify that this block diagram matches what you've actually built by
> making sure every step in your system does what you think it does, at
> least according to documentation or source code (this is an important
> step)
>
> 4. (MOST important step) Explicitly write down:
> a) What should be happening
> b) What is happening instead
> c) A list of suspicions you already have to later work through, cross
> out and amend
>
> 5. Build a simplified system that reproduces b). In GNU Radio, that
> typically means taking the signal that leads to the problem, and write
> it to a file sink, to be able to replay *exactly the same thing* later
> on and work on things until the issue is fixed.
>
> 6. Find the *simplest possible* test input that would allow you to test
> whether the first element in your (simplified) system works. Implement
> that test by repeating step 4 on it: think about what it should be
> putting out, and check that it does.
> This can take the form of a unit test, or simply of hooking up a Qt
> time sink to the output of that first block, or as writing things to a
> file and opening that file with python and doing some statistics on it
> or … . Writing a unit test of course is the coolest way: that way, you
> can later (even automatically) check that you have no functional
> regressions, and you document for yourself/superiors/clients that
> you've dealt with that class of problems.
>
> 7. If first element does what it should, move on to the output of the
> second, repeat step 6
>
> 8. If you're stuck, try rubber-ducking the problem: explain the problem
> to someone not familiar with the overall problem (for example, a rubber
> ducky). This is an excellent method for two reasons:
>
> * You get to describe what you're doing, what you're expecting and
> what isn't happening in a way that forces you to explain it to
> someone who doesn't have the same knowledge of the problem as you –
> thereby forcing you to change your perspective on the problem, which
> very often leads to new (successful) approaches
> * For that explanation to not be totally insufficient¹ nor take
> hours², you train recognizing all the factors someone else (and
> you!!) would need to understand the problem, and usually these
> factors are what you need to control in order to further narrow
> down the problem. Also, in case you later discuss your problem with
> someone that you hope can actually contribute their experience,
> you've already done the narrowing down, and know what context you
> give, so that people don't have to repeatedly ask you for context to
> get the bigger picture. That's way more efficient.
>
> 9. Always, always take notes, somewhere; honestly, if they're readable
> to yourself, that's a bonus, but not necessary. That way, you notice
> when you're about to try something overly complicated, and you notice
> when you do something stupid, and it decreases the chance of you doing
> something twice in a long debugging session. For structured note-
> taking, I do enjoy Zim, a desktop wiki software.
>
> Best regards,
> Marcus
>
> ¹ "hey rubber
> ducky, my correlation TDOA system doesn't work" would not make the
> ducky any smarter about the problem, but a
> "hey rubber ducky, I've
> got this TDOA receiver based on a windowed crosscorrelation of two
> WiFi packets, but I'm getting two peaks in the crosscorrelation
> function, but I need exactly one to find the time difference!"
> might make ducky look you in the eye and tell you to look at the
> autocorrelation function of your WiFi packet.
> ² "hey rubber ducky, so I've got this job where they pay me to
> implement software, and so I thought I'd try my hands at finding the
> location of RF car keys through SDR; you see, I've been fascinated
> by car keys for nearly as long as I can think. I think it all
> started when my grandpa…"
> On Tue, 2018-05-29 at 20:59 -0400, Linda20071 wrote:
> > Hello everybody,
> >
> > Are there any good tutorials or videos on youtube that explains how
> > to do debugging on gnuradio signal processing programming?
> >
> > Thanks in advance!
> >
> >
> > Linda
> >
> > _______________________________________________
> > Discuss-gnuradio mailing list
> > [email protected]
> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio