![openjdk-7 gdb 列表错误:“main.c:没有此文件或目录”](https://linux22.com/image/976991/openjdk-7%20gdb%20%E5%88%97%E8%A1%A8%E9%94%99%E8%AF%AF%EF%BC%9A%E2%80%9Cmain.c%EF%BC%9A%E6%B2%A1%E6%9C%89%E6%AD%A4%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%E2%80%9D.png)
我目前正在努力调试 Trusty Tahr 中的 openjdk。我已经安装了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
使用它。