GDB가 왜 "파일 아키텍처가 인식되지 않음"이라고 말합니까?
문제
AIX 5.3에서 실행되는 AIX 공유 LIB에서 GDB를 사용하고 있습니까? 이 파일에 대해 GDB를 실행하려고 할 때 ""파일의 아키텍처 "라는 오류 메시지가 표시됩니다.
왜 내가이 메시지를받는 지 아는 사람이 있습니까?
GDB는 XLC가 컴파일 한 다른 실행 파일에서 정상적으로 실행됩니다.
컴파일하는 동안 사용했을 수있는 옵션이 있습니까? GDB.Some 프로세서 별 옵션과 호환되지 않습니다.
AIX의 공유 LIB W XLC v9.0을 컴파일했습니다.
감사.
해결책
void set_gdbarch_from_file (bfd *abfd) { struct gdbarch_info info; struct gdbarch *gdbarch; gdbarch_info_init (&info); info.abfd = abfd; info.target_desc = target_current_description (); gdbarch = gdbarch_find_by_info (info); if (gdbarch == NULL) error (_("Architecture of file not recognized.")); deprecated_current_gdbarch_select_hack (gdbarch); }
이것은 실제 GDB 코드 (GDB/Arch-utils.C : 530-544)입니다.
GDBarch 포인터에 전달 된 정보는 유효하지 않은 것 같습니다. 이것은 gdb_find_by_info가 null 포인터를 반환하여 발생하며 find_arch_by_info (gdb/gdbarch.c : 3656)에 의해 발생합니다.
기본적으로 말하는 것을 의미합니다. GDB는 파일의 아키텍처를 식별 할 수 없습니다. 이것은 흔한 최근 GDB 버전에서도 XLC의 문제.
XLC와 GDB는 내가 기억하고 이해하는 한, 호환성 용어 (AIX 지원은 최소화됨)와 관련하여 그리 좋지 않습니다. GNU C 컴파일러 . 당신은 GDB 소스를 볼 수 있습니다 매우 특정 정보 (내가 정말로 줄 수없는).
여기 GCC-AIX 세부 사항에 대한 링크입니다.
다른 팁
공유 라이브러리에서 GDB를 실행하지 않으면 실행 파일.
실행 파일이 공유 라이브러리를로드하면 GDB는 이에 대해 알게됩니다.