2012-08-28 3 views
2

코어 덤프에서 gdb를 사용할 때 특정 경로에서 찾을 수없는 일부 .so를보고합니다. 예를 들어,gdb의 어떤 명령이 dbx의 경로 맵과 동일합니까?

기호 내가 루트 디렉터리를 만들 수있는 관리자 권한이없는 /root/a/xx.so

에 대한 파일을 찾을 수 없습니다,하지만 난 xx.so을해야합니까 dbx에서 pathmap을 사용하여 디버그를 계속할 수있는 경로를 변경할 수 있습니다. 하지만 gdb에서 같은 명령을 찾을 수 없습니다.

또한 컴파일러 명령을 변경할 권한이 없습니다. 즉, 다시 컴파일 링커 경로를 변경할 수 없습니다.

+0

이다는 코어를 만든 시스템에서 GDB를 실행할 수 있습니까? –

+0

아니, 살아있는 사이트에서 왔으며 실험실에서 재현 할 수 없습니다. – yiweng

+0

그렇지만 gdb를 설치하고 검사하는 것은 쉬운 일이 아니며 gdb는 프로덕션 시스템에서 거의 오버 헤드를 가지지 않으므로 시스템에서 생성 된 핵심 파일이 있다고 가정합니다. –

답변

1

sysroot에서 검색 할 때 공유 라이브러리를 검색하기 위해 디렉토리 이름의 콜론 구분 목록을 사용하는 set solib-search-path이 필요합니다.

관련 명령 set sysroot (별칭 : set solib-absolute-prefix)을 사용하면 절대 경로 이름을 사용하여 라이브러리를로드하는 데 사용되는 루트로 디렉토리를 설정할 수 있지만 해당 디렉토리 구조 아래에 라이브러리가 배치되어 있는지 확인해야합니다 새로운 루트, 그리고 당신이 이것을하고 싶지 않은 것처럼 들린다.

1

dir 명령을 사용하여 파일 위치를 변경할 수 있습니다.

1

당신이 찾고있는 명령은

set substitute-path <from> <to>