On Wed, Oct 25, 2023 at 3:29 AM Seidl, Aron via lttng-dev <lttng-dev@lists.lttng.org> wrote: > > Hi Simon, > Thanks for your quick answer! > I run GDB like this: > gdb --args ./babeltrace2 /home/aron/Schreibtisch/kernel4 -o text > (I'm in src/cli/.libs) > > I don't think I've ever installed a System Version of babeltrace2, so it is > really weird that GDB uses following library: > > 0x00007ffff7f36f00 0x00007ffff7f89749 Yes (*) > /lib/x86_64-linux-gnu/libbabeltrace2.so.0 > (*): Shared library is missing debugging information. > > And you're absolutely right! That is the reason why I can't debug it.
Note that you can also install the project locally: $ BABELTRACE_DEV_MODE=1 BABELTRACE_MINIMAL_LOG_LEVEL=TRACE \ BABELTRACE_DEBUG_MODE=1 CFLAGS='-g -O0' CPPFLAGS='-g -O0' \ ./configure --prefix=$PWD/install Make sure to run `make install`. Then `$PWD/install/bin/babeltrace2` is fully installed and independent and will load the correct libbabeltrace2 because it has `$PWD/install/lib` as its runpath. You may debug as usual: $ gdb --args ./install/bin/babeltrace2 [...] Philippe > Is there a way to specify the library path? Because even with the libtool > wrapper, GDB uses the release version of libbabeltrace2.so.0. > > You're helping me a lot, thank you! :) > I hope you have a great day! > > Kind regards, > Aron > __________ > Aron Seidl > DH-Student IT Education > > Carl Zeiss AG > Carl-Zeiss-Strasse 22 > 73447 Oberkochen, Deutschland > > aron.se...@zeiss.com > http://www.zeiss.de/ > __________ > Carl Zeiss AG > Sitz der Gesellschaft: Oberkochen, Deutschland > Vorsitzender des Aufsichtsrates: Dr. Michael Bolle > Vorstand: Dr. Karl Lamprecht (Vorsitzender), > Susan-Stefanie Breitkopf, Sven Hermann, Dr. Christian Müller, > Andreas Pecher, Dr. Jochen Peter, Dr. Markus Weber > Amtsgericht Ulm, HRB 501 555, USt-IdNr: DE 811 119 940 > > > > > -----Ursprüngliche Nachricht----- > Von: Simon Marchi <sim...@simark.ca> > Gesendet: Dienstag, 24. Oktober 2023 20:52 > An: Seidl, Aron <aron.se...@zeiss.com>; lttng-dev@lists.lttng.org > Betreff: Re: [lttng-dev] Debugging Libaries in Babeltrace 2 > > On 10/24/23 11:52, Seidl, Aron via lttng-dev wrote: > > Hello guys, > > I'm currently a student at the company Carl Zeiss in Oberkochen Germany. > > I'd like to trace the Kernel from our CMM-Controller with CTF and convert > > it to plain text, like Babeltrace 2 does. To understand how Babeltrace 2 > > works with CTF, I debug the code. > > Hi Aron, > :w > > > > > > > However when I try to step into a function which is included via the extern > > Babeltrace 2 library (e.g. *bt_graph_run(ctx.graph)* in graph.c), the GNU > > Compiler steps over the function and I'm unable to look into this function. > > > > > > > > I figured, it is because the Debugger cannot find the Debug Symbols even > > though I compile everything with Debug-Symbols and no compiler optimization. > > > > I configure the Makefile as follows: > > > > > > > > BABELTRACE_DEV_MODE=1 BABELTRACE_MINIMAL_LOG_LEVEL=TRACE > > BABELTRACE_DEBUG_MODE=1 CFLAGS='-g -O0' CPPFLAGS='-g -O0' LDFLAGS='-g > > -O0' ./configure > > You probably mean CXXFLAGS, not CPPFLAGS. CXXFLAGS are flags to be passed to > the C++ compiler, CPPFLAGS are flags to be passed to the preprocessor. It's > probably going to work anyway, since preprocessor flags are passed when > compiling, but I wanted to point it out because it looks like a mistake. > > > > > > > > > For test purposes, I implemented the function *bt_graph_run(NULL) *inside a > > new project to check, if I could step into the function with my debugger, > > or whether it is a general problem with my machine. > > > > That actually worked and I was able to step into the function, but not with > > the normal Babeltrace 2 project. > > > > None of my colleagues could explain this behavior, so my question now is, > > how do you guys debug the code? Is there a different way you debug these > > functions, or do I configure my project the wrong way? > > > > > > > > I appreciate it if someone can help me and tell me how to configure the > > project so that the code is debugable. > > Can you please show how you start and run babeltrace2 under GDB? > > My guess is that you end up using a system version of libbabeltrace2.so from > a package you installed or something. In GDB, do "info shared" and see what > the libbabeltrace2.so line looks like. It should be like this, with a path > in your build directory. There should be no asterisk indicating that the > debug info is missing. > > 0x00007ffff75a87f0 0x00007ffff76f5990 Yes > /home/smarchi/build/babeltrace/src/lib/.libs/libbabeltrace2.so.0 > > Since we are using libtool, the src/cli/babeltrace2 file is actually a > libtool script that sets up the right environment (LD_LIBRARY_PATH and > stuff) for running the real babeltrace2 binary (found at > src/cli/.libs/babeltrace2) directly in the build tree. The proper way to > debug it is with the libtool wrapper: > > $ libtool --mode=execute gdb -q --args src/cli/babeltrace2 > /home/smarchi/src/babeltrace/tests/data/ctf-traces/1/succeed/sequence > Reading symbols from > /home/smarchi/build/babeltrace/src/cli/.libs/babeltrace2... > (gdb) b bt_graph_run > Function "bt_graph_run" not defined. > Make breakpoint pending on future shared library load? (y or [n]) y > Breakpoint 1 (bt_graph_run) pending. > (gdb) r > Starting program: > /home/smarchi/build/babeltrace/src/cli/.libs/babeltrace2 > /home/smarchi/src/babeltrace/tests/data/ctf-traces/1/succeed/sequence > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > > Breakpoint 1, bt_graph_run (graph=0x6120000025c0) at > /home/smarchi/src/babeltrace/src/lib/graph/graph.c:683 > 683 BT_ASSERT_PRE_NO_ERROR(); > > See: > https://www.gnu.org/software/libtool/manual/html_node/Debugging-executables.html > > Simon > _______________________________________________ > lttng-dev mailing list > lttng-dev@lists.lttng.org > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev