2013-12-21 4 views
0

AIX 서버에서 충돌을보고 한 고객이 있으며 코어 덤프를 제공했습니다. 코어 덤프는 릴리스 라이브러리 및 실행 파일에 의해 생성됩니다.dbx를 사용하여 코어 덤프를 분석 할 때 소스 코드를 연결하는 방법

이제 dbx를 사용하여 분석하면 줄 번호를 가져올 수 없습니다.

dbx에 소스 코드를 첨부 할 수 있습니까? 디버그 정보로 라이브러리와 실행 파일을 다시 컴파일 한 다음 dbx로로드 할 수 있습니까?

또는 고객에게 우리의 libs 및 실행 파일의 디버그 버전을 제공하고 충돌을 재현하고 코어 덤프를 보내야합니까?

답변

0

코어 파일은 dbx를 첨부하려는 동일한 실행 파일과 일치해야합니다. 디버그 기호를 원하면 고객이 디버그 버전 (-g, unstripped로 컴파일 됨)을 실행하고 해당 크래시에서 생성 된 코어를 보내야합니다.

dbx 디스플레이 소스를 갖는 것은 또 다른 단계입니다. see the -I option or "use" command은 dbx가 디버그 빌드와 관련된 소스 파일을 가리킬 수 있도록합니다.

디버그 대 릴리스 빌드에서 크래시가 발생하지 않는 경우가 종종 있습니다. 때때로 좌절 할 수 있습니다.

특히 모험을하는 경우 "where"(해당 기능 내에서 현재 기능과 오프셋 표시) 조합을 사용하여 어셈블러를 표시 할 수 있습니다. 소스 파일 (Xlc의 -S 옵션)에서 어셈블러를 생성하면 C/C++ 문이이 문제를 일으키는 것과 아주 가깝게 될 수 있습니다. 디버그 빌드를하지 않고 생산 과정에서 핵심 요소를 재현하려는 시도를 여러 번 해보았습니다.

행운을 빈다.

+0

한 가지 더 질문 : 하나의 실행 파일과 몇 개의 libs (.a 파일)가 있는데, libs에서 충돌이 발생하면 해당 lib의 디버그 버전을 배포 할 수 있습니까? 디버그 실행 파일도 배포해야합니까? – performanceuser

+0

우리는 그것을 재현 할 수 없기 때문에 묻습니다. 고객의 환경에서만 발생합니다. – performanceuser