Es scheint, dass Sie gdb die Symboltabelle nicht gegeben haben oder Ihr Programm wird entfernt.
Wenn Sie an ein Programm anhängen, sollten Sie gdb mitteilen, welche Programmdatei Sie anhängen, damit es die Symboltabelle liest. Sie sollten Ihr Programm mit -g (Debugging-Unterstützung) kompiliert haben und sicherstellen, dass der Linkpass keine Symbole entfernt. Führen Sie dann gdb wie folgt:
gdb myprog -p 804
Sie können aber auch ausführen, ohne Befestigung (das ist whay Sie getan haben) und dann anbringen.
gdb myprog
GNU gdb (GDB) 7.10 for GNAT GPL 2017 [rev=gdb-7.10-ref-199-g7cfc608]
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
See your support agreement for details of warranty and support.
If you do not have a current support agreement, then there is absolutely
no warranty for this version of GDB. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from prog...done.
(gdb) attach 804
Sie können auch die Symbol-Datei Befehl gdb sagen, welche Programmdatei auszuführen:
(gdb) symbol-file myprog
Reading symbols from myprog...done.
Wenn Ihr Programm gestrippt wird, wird gdb
Reading symbols from prog...(no debugging symbols found)...done.
drucken
Wenn Sie Ihre Symboltabelle lesen, können Sie die Quelldateien auflisten, die von gdb erkannt werden, indem Sie inf verwenden o Quellen Befehl. Dies teilt Ihnen die Quelldateien mit, die in der Symboltabelle identifiziert wurden.
(gdb) info sources
Source files for which symbols have been read in:
.../b__myprog.adb,
.../b__myprog.ads,
/build/eglibc-SvCtMH/eglibc-2.19/elf/rtld.c,
/build/eglibc-SvCtMH/eglibc-2.19/elf/../sysdeps/generic/_itoa.h,
/build/eglibc-SvCtMH/eglibc-2.19/elf/../sysdeps/unix/sysv/linux/dl-osinfo.h,
...
Ein weiterer interessanter Befehl, den Sie verwenden können, ist info Dateien. Dies teilt Ihnen die Programmabschnitte mit, die mit der zugehörigen Symboldatei identifiziert wurden. Wenn Sie dynamische Bibliotheken haben, sollten Sie sie auch dort sehen.
(gdb) info files
Symbols from "myprog".
Native process:
Using the running image of child Thread 0x7ffff7fb4780 (LWP 32214).
While running this, GDB does not access memory from...
Local exec file:
`myprog', file type elf64-x86-64.
Entry point: 0x40ac5e
0x0000000000400238 - 0x0000000000400254 is .interp
0x0000000000400254 - 0x0000000000400274 is .note.ABI-tag
0x0000000000400278 - 0x0000000000400cb4 is .hash
0x0000000000400cb8 - 0x0000000000403148 is .dynsym
0x0000000000403148 - 0x00000000004046b5 is .dynstr
0x00000000004046b6 - 0x00000000004049c2 is .gnu.version
...
Sie scheinen ein grundlegenderes Problem zu haben als "Quelle nicht lokalisieren" - GDB * hat keine Ahnung * wo Sie es verarbeiten. Dies hängt wahrscheinlich damit zusammen, wie Sie GDB aufgerufen haben. Versuchen Sie stattdessen 'gdb -p 804'. –
Ich berufe es aus dem Menü in GPS ... – theMayer