
Ich habe derzeit Probleme mit dem Debuggen von OpenJDK in Trusty Tahr. Ich habe es bereits installiert opejdk-7-jdk
und openjdk-7-dbg
. Wenn ich ein Problem habe, gdb java
sehe ich, dass es die Symbole richtig liest, aber wenn ich den Code auflisten möchte, beschwert es sich über „main.c nicht gefunden“. Ich schaffe es, das Debuggen in CentOS zum Laufen zu bringen, und ich könnte die Datei main.c auflisten, aber ich möchte, dass es unter Ubuntu funktioniert, da dies meine Hauptdistribution ist.
Rohausgabe:
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 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.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from java...Reading symbols from /usr/lib/debug//usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java...done.
done.
(gdb) l
85 ../../../../src/share/bin/main.c: No such file or directory.
(gdb)
Muss ich zusätzlich etwas tun, um main.c dort zu platzieren, wo es gefunden werden kann?
Antwort1
Sie sollten die source path
von gdb verwendete Datei ändern, um die Quelldatei herauszufinden.
Entsprechendgdb-Handbuch:
Ausführbare Programme zeichnen manchmal nicht die Verzeichnisse der Quelldateien auf, aus denen sie kompiliert wurden, sondern nur die Namen. Selbst wenn sie dies tun, können die Verzeichnisse zwischen der Kompilierung und Ihrer Debugsitzung verschoben werden. GDB verfügt über eine Liste von Verzeichnissen, in denen nach Quelldateien gesucht werden kann. Dies wird als Quellpfad bezeichnet.
Sie müssen zunächst herausfinden, wo sich die Quelldateien auf Ihrem System befinden:
locate main.c
und verwenden Sie dann dir dirname
den Befehl, um:
Fügen Sie dem Quellpfad das Verzeichnis dirname voran. Diesem Befehl können mehrere Verzeichnisnamen gegeben werden, getrennt durch ':' (';' unter MS-DOS und MS-Windows, wo ':' normalerweise als Teil absoluter Dateinamen vorkommt) oder Leerzeichen. Sie können ein Verzeichnis angeben, das sich bereits im Quellpfad befindet. Dadurch wird es nach vorne verschoben, sodass GDB es früher durchsucht.
Lesen Sie den oben stehenden Link zum GDB-Handbuch sorgfältig durch, um zu erfahren, wie es source path
verwendet wird.