외부 공유 라이브러리에 의존하는 프로그램이 있지만 라이브러리 내부의 함수가 실행 된 후에 중단 점을 사용할 수 없게됩니다.함수 호출 후 GDB 중단 점이 혼동됩니까?
이 기능을 실행하기 전까지는 정상적으로 작동하고 중단 될 수 있지만 이후에는 절대로 종료되지 않습니다. 프로그램을 실행하기 위해 두번 째 시도 할 때 메인에서 중단되지 않습니다. start
을 사용하십시오. 이전에이 함수를 사용하지 않았기 때문에 인라인 함수 문제는 아닙니다.이 특정 함수를 주석 처리하면 모든 것이 다시 작동하기 시작합니다.
누구도 이전에 이런 일이 발생 했습니까? 내가 무엇을 할 수 있을지? GCC 3.2.3
편집과 GDB 7.1을 사용
: 사용자의 몇 가지 힌트 후 나는 프로세스가 라이브러리 호출 내에서 분기되는 것을 알아 냈다. 나는 그것이 무엇을하고 있는지 (그리고 나는 정말로 상관하지 않는다) 확신하지 못한다. 어떻게 든 보상 할 수 있을까요? 나는 아이로서 포크 모드를 실험 해왔다.하지만 일단 포크가되면 어떻게 될지 혼란스럽고 실행을 계속하거나 사용하는 방법을 알아낼 수 없다.
편집 : 추가 조사. 가장 가까운 내가 말할 수있는, gdb는 어딘가에 모든 심볼 정보를 잃고있다. 두 번째 실행 후 모든 심볼은 @plt 주소로 해석되며 처음 실행시 확인한 실제 주소로 해석되지 않습니다. 어떻게 든 프로세스의 두 번째 로딩은 처음으로 얻은 정보를 모두 잃어 버리고 다시로드하는 것을 거부합니다. 난 너무 혼란 스러워요!!
편집 : 그래서 나는 popen 호출의 vfork에이 문제를 추적했습니다. gdb가 popen과 잘 작동하지 않는 것 같습니다. 내가 popen'd vforked 과정에서 분리하자마자, 나는 나의 상징을 모두 잃는다. 나는 이것에 대해서도 온라인으로 몇 가지 보고서를 읽었습니다. 희망이 있습니까?
공유 라이브러리가 새로운 프로세스를 생성합니까? – Borealid
아마도 라이브러리 호출 somwhow가 호출 응용 프로그램을 종료하게 될까요? – bits
gcc 3.2.3은 꽤 오래 되었습니까? 플랫폼은 무엇입니까? 리눅스? –