
В настоящее время я борюсь с отладкой openjdk в Trusty Tahr. Я уже установил opejdk-7-jdk
и openjdk-7-dbg
. Когда я выдаю, gdb java
я вижу, что он правильно считывает символы, но когда я прошу вывести код, он жалуется на то, что main.c не найден. Мне удается заставить отладку работать в CentOS, и я могу вывести файл main.c, но я хочу, чтобы он работал в Ubuntu, так как это мой основной дистрибутив.
Необработанный вывод:
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)
Нужно ли мне что-то дополнительно делать, чтобы поместить main.c туда, где его можно будет найти?
решение1
Вам следует изменить source path
используемый gdb, чтобы узнать исходный файл.
В соответствии сруководство по gdb:
Исполняемые программы иногда не записывают каталоги исходных файлов, из которых они были скомпилированы, а только имена. Даже когда они это делают, каталоги могут перемещаться между компиляцией и сеансом отладки. GDB имеет список каталогов для поиска исходных файлов; это называется исходным путем.
Сначала вам необходимо выяснить, где в вашей системе находятся исходные файлы:
locate main.c
и затем используйте dir dirname
команду для:
Добавьте каталог dirname в начало исходного пути. Этой команде можно задать несколько имен каталогов, разделенных ':' (';' в MS-DOS и MS-Windows, где ':' обычно появляется как часть абсолютных имен файлов) или пробелом. Вы можете указать каталог, который уже есть в исходном пути; это переместит его вперед, поэтому GDB выполнит поиск раньше.
Внимательно прочтите руководство по gdb по ссылке выше, чтобы узнать, как это source path
использовать.