코드를 실행할 때 세그먼트 화 오류가 발생했습니다. 오류/경고없이 컴파일되지만 실행시 오류 Segmentation fault
이 발생합니다. 아래에 코드 스 니펫이 있습니다.C++ Segmentation Fault - tinyXML
XMLElement *pStartTimeStamp = pRoot->FirstChildElement("mobileDevice")->FirstChildElement("RealTimeInformation");
XMLElement *pRealtimeStore = nullptr;
XMLElement *pIter0 = pStartTimeStamp->FirstChildElement("RunID");
while (pIter0 != nullptr) {
pRealtimeStore = pIter0;
pIter0 = pIter0->NextSiblingElement("startTimeStamp");
}
if (pRealtimeStore != nullptr) {
XMLElement *pNewStartTimeStamp = doc.NewElement("startTimeStamp");
pNewStartTimeStamp->SetText("pNewTimeStamp");
pStartTimeStamp->InsertAfterChild(pRealtimeStore, pNewStartTimeStamp);
}
편집 : 나는 gdb
를 실행 시도하지만이 줄에서 실패 코드를 단계별로 때 그것은
Program received signal SIGSEGV, Segmentation fault.
0x0000000000402ada in tinyxml2::XMLNode::FirstChildElement (this=0x0, value=0x408dd8 "RunID") at tinyxml2.cpp:745
745 for(XMLNode* node=_firstChild; node; node=node->_next) {
결과 :
20 XMLElement *pIter0 = pStartTimeStamp->FirstChildElement("runID");
(gdb) next
Program received signal SIGSEGV, Segmentation fault.
0x0000000000402ada in tinyxml2::XMLNode::FirstChildElement (this=0x0, value=0x408dd8 "runID") at tinyxml2.cpp:745
745 for(XMLNode* node=_firstChild; node; node=node->_next) {
XML 조각
<mobileDevice>
<mDeviceID></mDeviceID>
<deviceDescription></deviceDescription>
<units></units>
<devicePlacement></devicePlacement>
<quantisationResolution></quantisationResolution>
<realTimeInformation>
<runID/>
<sampleRate/>
<startTimeStamp/>
<endTimeStamp/>
<data/>
</realTimeInformation>
<event>
<mEventID/>
<timeStamp/>
<data/>
<support/>
</event>
</mobileDevice>
정확하게 세분화 오류가 발생하는 줄? 디버거를 사용하여 찾을 수 있습니다. – UnholySheep
'gdb'를 실행하려했지만'no debugging symbols found '라는 메시지가 나타났습니다. – Colin747
그러면 gdb에 필요한'-g' 플래그없이 코드를 빌드했을 것입니다. – UnholySheep