GDB는

2010-07-30 5 views
3

이외의 스레드를 보지 못합니다. GDB는 크래시가 발생한 스레드 외에 다른 스레드를 보지 못합니다. 또는 SIGTRAP은 브레이크 포인트를 설정할 때 내 프로그램을 죽인다.GDB는

답변

5

이 작업은 주로 Linux, 특히 내장 된 대상에서 발생합니다. 두 가지 일반적인 원인은 다음과 같습니다

  • 당신의 glibc를 사용하고, 그리고 당신은 GDB 자체는 유지 "스레드 제어 블록"을 디코딩하는 방법을 알고하지 않습니다 libpthread.so.0
  • 불일치

libpthread.so.0 사이 libthread_db.so.1 제거했다 glibc에 의해 구현되었고 glibc 사설 구현 세부 사항으로 간주됩니다. 그것을 돕기 위해 libthread_db.so.1 (glibc의 일부)을 사용합니다. 따라서 libthread_db.so.1libpthread.so.0은 버전 및 컴파일 플래그에서 일치해야합니다. 또한 libthread_db.so.1에는 libpthread.so.0에 특정 비전 역 심볼이 있어야합니다.

해결책 : strip libpthread.so.0 대신 strip --strip-debug libpthread.so.0을 사용하십시오.

원격 디버깅을 수행하는 경우 대상에 libpthread.so.0, 호스트에 libthread_db.so.1이 일치하는지 확인하십시오.

관련 문제