[dpdk-dev] backtracing from within the code
rami.rosen at intel.com
Sat Jun 25 16:07:03 CEST 2016
If you are willing to skip static methods and use the GCC backtrace, you can
try this example (it worked for me, but it was quite a time ago):
From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Stephen Hemminger
Sent: Friday, June 24, 2016 8:46 PM
To: Thomas Monjalon <thomas.monjalon at 6wind.com>
Cc: Catalin Vasile <cata.vasile at nxp.com>; dev at dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu at intel.com>
Subject: Re: [dpdk-dev] backtracing from within the code
On Fri, 24 Jun 2016 12:05:26 +0200
Thomas Monjalon <thomas.monjalon at 6wind.com> wrote:
> 2016-06-24 09:25, Dumitrescu, Cristian:
> > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Catalin Vasile
> > > I'm trying to add a feature to DPDK and I'm having a hard time printing a
> > > backtrace.
> > > I tried using this functions for printing, but it does not print more than one
> > > function. Maybe it lacks the symbols it needs.
> > It eventually calls rte_dump_stack() in file lib/lirte_eal/linuxapp/eal/eal_debug.c, which calls backtrace(), which is probably what you are looking for.
> 5: [build/app/testpmd(_start+0x29) [0x416f69]]
> 4: [/usr/lib/libc.so.6(__libc_start_main+0xf0) [0x7eff3b757610]]
> 3: [build/app/testpmd(main+0x2ff) [0x416b3f]]
> 2: [build/app/testpmd(init_port_config+0x88) [0x419a78]]
> 1: [build/lib/librte_eal.so.2.1(rte_dump_stack+0x18) [0x7eff3c126488]]
> Please tell us if you have some cases where rte_dump_stack() does not work.
> I do not remember what are the constraints to have it working.
> Your binary is not stripped?
The GCC backtrace doesn't work well because it can't find static functions.
I ended up using libunwind to get a better back trace.
More information about the dev