특정 라이브러리의 작동 방식을 이해하려고합니다. 나는 추가 된 prinfts로 그것을 컴파일했고 모든 것이 훌륭합니다. 이제 런타임 동안 예제 프로그램을 중단하여 호출 스택을 보려고하지만 gdb로 수행하는 방법을 알 수는 없습니다. 중단하고 싶은 기능은 공유 라이브러리 안에 있습니다. 나는 여기에서 previous question을 검토했지만, 그 접근법은 나를 위해 작동하지 않습니다. 문제의 언어는 C++입니다. 파일 이름과 줄 번호를 제공하려고 시도했지만 gdb는이를 이해하지 않고 데모 응용 프로그램의 소스 파일 만 나열합니다.런타임 중에 공유 라이브러리 내에서 디버깅/추적?
제안 사항?
예 (내가 세부 자신을 설명 할 수 있지만) GDB에서 그런 식으로 중단 점을 설정하지만, 그 컴파일 확신 할 수 라이브러리를 -g와 함께 사용하고 최적화를 해제하십시오! – Alex
불행히도 그게 도움이되지 못했습니다. 이 기능은 메인에서조차도 여전히 보이지 않습니다. 실행을 멈추고 디버거에 떨어 뜨릴 수 있도록 코드에 추가 할 수있는 것이 있습니까? – EightyEight
@ EightyEight : 흠, 저에게는 효과적입니다. 아마도 디버깅하려는 라이브러리가 dlopen()을 통해 동적으로로드 되었습니까? 왜 메인에서 보이지 않는지 설명 할 수 있습니다. 이 경우 대상 라이브러리에 대한 dlopen 호출 후 초기 중단 점을 설정 한 다음 최종 중단 점을 설정할 수 있습니다. 더 간단한 방법이 있어야하는 것처럼 보입니다. 나는 계속 볼거야. –