
현재 Trusty Tahr에서 openjdk를 디버깅하는 데 어려움을 겪고 있습니다. 나는 이미 opejdk-7-jdk
및 를 설치했습니다 openjdk-7-dbg
. 문제를 실행하면 gdb java
기호가 올바르게 읽히는 것을 볼 수 있지만 코드 목록을 요청하면 main.c를 찾을 수 없다고 불평합니다. CentOS에서 디버깅 작업을 수행하고 main.c 파일을 나열할 수 있지만 Ubuntu가 내 기본 배포판이므로 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
.