Linux에서 응용 프로그램의 문제점을 디버그하려고합니다. 무작위로 SIGSEGV를 사용하면 libstdc++.so
또는 libstdc.so
으로 충돌하는 경향이 있습니다.Linux에서 스레딩 문제를 해결하는 방법은 무엇입니까?
내가 추가 한 스레드의 작업이 매우 고립되어 있으므로 어디에서든 경쟁 조건이없는 것처럼 보입니다. 그러나 거의 항상 충돌합니다.
응용 프로그램이 g++ -c ... -pthread -D_REENTRANT
컴파일 및 g++ -pthread -o ...
와 연결하지만 여전히 libstdc*.so
기능 중 하나에 거의 모든 시간을 충돌 것입니다. 나는 무엇이 잘못 되었는가를 알아 내려고 노력하면서 며칠을 낭비했다 ...
어떤 조언이 있으십니까? libstdc*.so
이 스레드를 인식하도록 컴파일되어 있는지 확인하는 방법이 있습니까? 나를 도울 수있는 모든 gdb 명령들? 디버깅 힙?
내가 몇 년 동안 리눅스와 함께 일하고 있어요, 그래서 잃었어요 ...
코드의 관련 섹션을 게시 할 수 있습니까? – hmjd
당신은 그 벌레 깡통을 가진 겨자를 원하십니까? – PlasmaHH
@hmjd : 불행히도 멀티 스레드 용으로 확장 된 이미 큰 코드베이스입니다. 하위 집합에 대한 복제 시나리오를 만들 수 없습니다. 따라서 나는 도움이 될 수있는 기술을 찾고 있습니다. 그게 내가 할 수있는 전부입니다. – Coder