2012-05-10 2 views
0

원본 질문에 segfaults 및 제 3 자 라이브러리 전체 업무가 산만하기 때문에 편집 된 질문을 게시하고 있습니다.코어 덤프에서 xerces-c DOMDocument를 트래버스하는 방법은 무엇입니까?

내가 가지고있는 프로그램은 xerces-c와 segfaults (프로세스에서 코어 덤프 만들기)를 사용하는 프로그램입니다. 내가하고 싶은 것은 gdb를 시작하고 생성 된 DOMDocument를 코어 덤프에서 트래버스하는 것입니다.

예를 들어, 주어진 DOMElement의 속성 또는 자식 노드 등을 가져오고 싶습니다. 누구든지이 기사에서 DOMElements의 내부 구조를 설명하는 기사를 가지고 있습니까? 또는 소스 코드 tarball에서 DOMElement의 소스 코드를 찾을 수 없기 때문에 xerces-c 소스 코드에 대한 일부 리소스를 알려줍니다. (소스 코드를 가짐으로써 DOMElement가 어떻게 구현되는지 정확하게 알 수 있기 때문에 도움이 될 것입니다.)

내가 말했듯이, 나는 xerces-c 코드베이스에 너무 익숙하지 않고 아파치 설명서는 끔찍한 것이다.

원래 질문 : - 나는 다시 XML 어딘가에 구문 분석하는을 segfaulting됩니다에 대한 xercesc를 사용하는 타사 라이브러리를 사용하고

. core-dump에서 xerces-c 요소를 검사하려면 어떻게해야합니까?

라이브러리 소스 코드에 액세스 할 수 있으며 DOMElement 참조를 함수 인수로 사용하는 함수에서 segfaulting을합니다. 내가 코어 덤프에서이 DOMElement을 검사 할

void func (DOMElement& e, ...) { 
} 

같은 뭔가 (인쇄 아웃로의 이름, 태그, 어린이 요소 등등. 기본적으로이 DOMElement 아래에있는 DOMDocument을 통과)하지만 난 익숙하지 않아요 xerces-c 코드베이스로.

이 작업을 수행하는 방법에 대해 알고 싶습니다.

추가 정보 : - gdb를 사용하고 있습니다.

+2

희생 7 닭고기 – PlasmaHH

답변

1

gdb를 사용하는 경우 리눅스를 사용하고 있다고 가정합니다. 그런 다음 libexerces-c++-dev (또는 배포판에 따라 libexerces-c++-devel) 패킷과 소스 코드를 설치해야합니다. 이렇게하면 xerces 코드에 중단 점을 설정할 수도 있습니다.

저는 과거에 많은 xerces를 사용 해왔고 일반적으로 문제는 라이브러리 자체가 아니라 "호출자"에 있습니다. 귀하의 경우에는 외부 라이브러리를 사용하여 매우 간단한 프로젝트를 만들고 간단하게 작동하는 XML 파일을 구문 분석하려고합니다. 충돌 지침을 찾을 수있을지라도 xerces가 도움이 될 것 같아 의심 스럽습니다.

+0

libxerces-C++ - dev 패키지에 전체 디버깅 심볼 정보가 포함되어 있지 않았기 때문에 source에서 xerces-c를 컴파일했습니다. 어쨌든, 나는 문제가 xerces-c가 아니라 라이브러리에 있다고 확신하므로 라이브러리가 "올바른"DOMElement 노드를 만들고 전달하는지 확인하기를 원합니다. XML 파일에서 DOMPrint를 실행하면 문제가 없으므로 완벽하게 작동합니다. 작은 테스트 간부 작성도 잘 작동합니다. segfault는 분명히 외부 라이브러리에 있으므로 걱정할 xercesc가 아닙니다. – owagh

+0

외부 라이브러리를 사용하는 작은 테스트 exec을 작성해 보셨습니까? 그것이 내 대답에서 의미하는 바였습니다. 작은 테스트는 외부 라이브러리 용이었고 xerces 용이었습니다. 모호성을 제거하기 위해 내 대답을 업데이트하겠습니다. – Emiliano

+0

나는 당신이 그것을 의미한다고 생각 했었습니다 ... 그리고 네, 작은 테스트 임원은 잘 작동하는 것 같습니다. 최소한의 실행 파일로 다시 만들 수 없었습니다.어쨌든, 나는 segfaults를 고쳤지 만, 나의 질문은 여전히 ​​답이 없습니다. 디버거에서 xerces-c DOMDocument를 트래버스하는 방법은 무엇입니까? 제 3 자 라이브러리 및 세그 폴트의 전체 비즈니스가 질문의 요점에서 단지 산만하기 때문에 질문을 업데이트하여 좀 더 일반적인 것으로 만듭니다. – owagh