2012-04-02 3 views
1

c 또는 C++에서 코어 덤프를 디버깅하는 동안, 즉 코어 덤프 파일을 남겨두고 코어 파일을 사용하여 디버그하려고하면 마지막 몇 줄을 볼 수 있습니다. 코드는 덤프가 발생하기 전에 발생합니다. 스택 추적은 함수 호출 만 표시합니다.코어 덤프를 디버깅하는 동안 소스 라인

예에 대한

: DBX 또는 gdb를 목록 명령에서 실행중인 프로세스를 디버깅하는 동안

list Display lines of a source file

현재로 보면서 우리는 옵션이와 동일한 방식으로 execution.in에서 코드의 일부를 줄 것이다 코어 덤프? 당신은 소스 라인을 표시 할 수 있습니다 -g 옵션을 사용하여 컴파일하면 은 내가 솔라리스 MDB

답변

0

작업입니다. dbx에서 use 명령을 사용하여 dbx 소스 디렉토리를 설정할 수 있습니다.

list (l) 명령을 사용하여 원본 줄을 표시 할 수 있습니다.

dbx 및 gdb 명령을 사용하는 방법을 배우려면 help 명령을 참조하십시오.

0

dbx에서 use 명령을 사용하여 소스 경로를 올바르게 설정했거나 -I 옵션으로 시작한 경우 소스 행을 읽을 때 코어 덤프 디버깅과 일반적인 프로세스간에 차이가 거의 없습니다.

2

경우 소스 코드 라인 번호의 세부 사항 및 코어 파일에서 목록을 해당 소스를 제공해야 GDB의 list 명령.

  • 실행 파일이 활성화 디버그 기호 (예 : GCC와 g에 -g로 컴파일 ++)
  • 실행의 비 제거 버전을 사용할 수 (즉. strip을 실행하여 제거 디버그 정보)
  • 디버거가 관련 소스 파일을 찾을 수 없었습니다

줄 번호 정보가 디버그 기호의 일부가되므로 소스 파일을 찾을 수없는 경우에도 디버거에서 파일 및 줄 번호를 제공 할 수 있어야합니다. 이 정보는 bt (백 트레이스) 명령과 info symbol 명령을 통해 사용할 수 있어야합니다.

코어 파일이 제거 된 실행 파일에서 생성 된 경우에도 스트립되지 않은 버전에 액세스 할 수있는 한 코어 파일을 지정할뿐만 아니라 gdb에서로드 할 수 있습니다.

gdb manual의 13 장과 15 장을 살펴보면 gdb에서 소스 파일에 액세스하는 데 도움이됩니다.

관련 문제