문제

실행 파일이 있고 GDB를 사용하여 디버깅하고 있습니다.이것은 GDB를 사용하는 처음이므로 제발 제발 곰주세요.

함수에서 중단 점을 설정하고 클래스 덤프를 사용하여 함수의 이름을 알고 싶습니다.이제는 기호 테이블이 없다는 것이라고 말하기 때문에 해당 함수에 중단 점을 추가 할 수 없습니다.나는 기호 테이블을 추가하려고 시도했지만 기호 테이블이로드되지 않았 음을 여전히 불평합니다.

그래서 어쨌든이 방법으로 중단 점을 설정할 수 있습니까?그것은 C (차이를 만드는 경우)가 아닌 객관적인 C 방법입니다.내가해야 할 일은이 방법의 인수를 검사하는 것입니다.

도움이 되었습니까?

해결책

클래스 덤프에서 -a 옵션이 기능의 주소를 인쇄 할 수 있습니다.

@interface FooObject : NSObject
{
}

- (void)y;  // IMP=0x100000d54

@end
.

이와 함께 주소를 사용하여 중단 점을 설정할 수 있습니다.

(gdb) b *0x100000d54
Breakpoint 1 at 0x100000d54
.

실행 파일을 제거하지 않으면 메소드의 이름을 사용하여 휴식 지점을 항상 설정할 수 있어야합니다

(gdb) b -[FooObject y]
Breakpoint 2 at 0x100000d60
.

(주소는 일부 프레임 설정 코드를 건너 뛰는 것과 동일하지 않습니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top