Hi,
there have been submitted these Bugs:
Drop the gcc dependency
https://bugzilla.redhat.com/show_bug.cgi?id=1195005
gdb pulls in devel packages (gcc, kernel-headers, etc.) [former Summary]
https://bugzilla.redhat.com/show_bug.cgi?id=1306591
due to recent GDBs having new:
Recommends: gcc-gdb-plugin%{?_isa}
which brings in the whole GCC compiler. Reasons for this new Recommends are
at the bottom of this mail labeled: Why to use gcc-gdb-plugin
Given that ABRT is installed by default and ABRT
Requires: gdb
this dependency installs GCC now even on servers and end-user machines (AFAIK,
I haven't tried that but it does make sense).
I believe that from the error message:
(gdb) compile print EXPRESSION
Could not load libcc1.so: libcc1.so: cannot open shared object file: No such file or
directory
a Fedora user does not realize s/he should run:
# dnf install gcc-gdb-plugin
Which is why I made it Recommends and not Suggests. Also in the close future
GDB will provide more functional
(gdb) print EXPRESSION
feature only with gcc-gdb-plugin installed. Just ABRT does not need
'print EXPRESSION' to use gcc-gdb-plugin but I guess any user running GDB
interatively does use 'print EXPRESSION'.
Unrelated to gcc-gdb-plugin there is already this 'dnf'-suggesting GDB message:
$ gdb -q true
Missing separate debuginfos, use: dnf debuginfo-install coreutils-8.25-14.fc25.x86_64
(gdb) _
Therefore I could patch Fedora GDB to also print instead:
(gdb) compile print EXPRESSION
Missing compiler, use: dnf install gcc-gdb-plugin
But that debuginfo-install command is already wrong on its own, despite Fedora
GDB prints that for 8 years now (sure with yum before). One inconvenience is
that one has to copy-paste it, instead of just some YES confirmation to run
that command. But GUI users probably do not want to run 'dnf' from a shell
- they want to run some GUI package manager instead (I do not know which one).
One can also see that such message does not work for GUI frontends of GDB:
$ cdtdebug -e true
If you do not have coreutils-debuginfo.rpm installed then Eclipse will print
just:
No source available for "main() at 0x555555557480"
without any hint one could run debuginfo-install to fix that.
Another possibility is to change ABRT so that it only Suggests GDB and ABRT
provides some user interface to install gdb.rpm upon demand:
https://bugzilla.redhat.com/show_bug.cgi?id=1195005#c18
This just moves this problem from GDB to ABRT.
As a summary: Is there a 'sudo dnf install' (and 'sudo dnf
debuginfo-install')
like command which does use GUI package manager if $DISPLAY is available?
GDB could also run some different command if $DISPLAY is available.
Is this the recommended solution? Or should I submit a FESCo ticket?
Thanks,
Jan
------------------------------------------------------------------------------
Why to use gcc-gdb-plugin:
The primary goal is to support complex expressions needed for C++ debugging.
Unfortunately current GDB does not yet support gcc-gdb-plugin for C++,
currently only C is supported. Therefore providing a usecase for C below.
More thorough background about C++ can be found at:
https://sourceware.org/gdb/wiki/GCCCompileAndExecute#History_and_Genesis
gcc-gdb-plugin is now required for
(gdb) compile print ...
such as:
echo -e '#include <math.h>\nint main(){return (int)HUGE_VAL;}' >1.c|gcc
-Wall -g3 1.c;gdb -q ./a.out -ex start
Reading symbols from ./a.out...done.
Temporary breakpoint 1 at 0x4004aa: file 1.c, line 2.
Starting program: /tmp/a.out
Temporary breakpoint 1, main () at 1.c:2
2 int main(){return (int)HUGE_VAL;}
(gdb) info macro HUGE_VAL
Defined at /usr/include/bits/huge_val.h:27
included at /usr/include/math.h:36
included at /tmp/1.c:1
#define HUGE_VAL (__builtin_huge_val())
->
(gdb) print HUGE_VAL
No symbol "__builtin_huge_val" in current context.
vs.
(gdb) compile print HUGE_VAL
$1 = inf
Without gcc-gdb-plugin GDB would print only:
(gdb) compile print HUGE_VAL
Could not load libcc1.so: libcc1.so: cannot open shared object file: No such file or
directory
Additionally it is expected that future GDB will use
(gdb) compile print EXPRESSION
for any use of:
(gdb) compile EXPRESSION