/ var / crash에서 충돌 파일을 읽는 방법


20

php-fpm이 우리에게 추락하고 파일을 덤프했습니다.

/var/crash/_usr_sbin_php5-fpm.1002.crash

해당 파일에 몇 가지 정보가 있지만 내가 따르는 것은 base64로 인코딩 된 형식의 CoreDump 섹션에 있습니다. 충돌 당시 무엇이 실행되고 있는지 어떻게 알 수 있습니까?

답변:


18

apport-retrace도구에 여러 하위 종속성을 설치하지 않으려는 경우 apport 형식을 별도의 파일로 압축 해제 하고 평소 CoreDumpgdb같이 덤프 만 사용할 수 있습니다.

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (여기에서 물결표에주의하십시오!)
  4. bt (출력 실제 역 추적)

    참고 : apport-unpack때로는 압축 풀기 작업에서 자체 충돌이 발생하지만 (apport는 xD 주변에서 모두 깨진 것처럼 보임) CoreDump 및 기타 파일이 있습니다. 무시하고 다른 .crash 파일을 /var/crash다른 곳으로 이동 한 후 삭제하십시오. 동일한 앱에서 새로운 충돌 보고서를 출력하는 시스템.


1
apport-retrace 를 설치하지 않고도 매력처럼 작동했습니다 . 감사합니다!
greuze

1
@digital_infinity 아니오?! 직접 참조하십시오. 에코와 고양이 사이에 큰 차이가 ...있다
stamster의

2
@ stamster 당신이 맞아요. 죄송합니다 ExecutablePath. name 파일이 있습니다. 독자가 거기에서 실행 가능한 경로를 채워야한다고 생각했습니다.
digital_infinity

15

라는 도구가 apport-retrace.crash 파일을 읽고 완전히 상징적 인 스택 추적과 하나 채우기 그것은 당신을 허용하거나 실행 gdb코어 덤프를 사용하여 세션. gdb 세션을 시작하려면을 실행하십시오 apport-retrace -g CRASHFILE.crash. 좋은 스택 추적을 얻으려면 -dbg 패키지가 설치되어 있어야합니다.

(PHP 전문가는 아닙니다) 실제로 충돌을 일으키는 파일 중 하나에 작성한 것일 수 있습니다.


4
아무튼의 t seem to work: #의 apport 귀선 -g _usr_sbin_php5-fpm.1002.crash ERROR : 필수 필드 중 하나에 포함되지 않은 보고서 파일 : 코어 덤프 DistroRelease 패키지 ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369을

10
충돌 파일을 편집하고 ExecutableTimestamp 아래에 "Package : 0"필드를 추가하십시오.
DarkNeuron
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.