2009-06-08 2 views
0

aix 5.3에서 실행되는 aix 공유 라이브러리에서 gdb를 사용합니까? 내가 "파일의 구조가 인식되지" "라는 오류 메시지가이 파일 을 위해 GDB를 실행하려고하면 이 고정 얻을하는 방법을 알고하지 마십시오. 난"이 메시지 "를받을 이유GDB에서 "파일 아키텍처가 인식되지 않습니다"라고하는 이유는 무엇입니까?

아무도 알고 있나요 파일 아키텍처가 인식되지 않습니다 "?

gdb는 xlc에 의해 컴파일 된 다른 실행 파일에서 정상적으로 실행됩니다.

GDB.some 프로세서 특정 옵션과 호환되지 않는 일부 컴파일 옵션이 있습니까?

aix 용 공유 라이브러리 w xlc v9.0을 컴파일했습니다.

감사합니다.

+0

정확한 질문이 아닙니다 ... 아마도 조금 더 자세히 설명해 드릴 수 있습니다 .... –

답변

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)가 NULL 포인터를 반환하기 때문에 발생합니다.

기본적으로 GDB는 파일의 아키텍처를 식별하지 못했습니다. 이것은 최근 gdb 버전에서도 xlc에 대해 common 문제입니다.

XLC와 gdb는 호환성을 고려할 때 매우 좋지는 않지만 (AIX 지원은 미미함) Gnu C Compiler을 사용해 볼 수 있습니다. VERY에 대한 GDB 소스를 살펴보십시오. 특정 정보 (실제로 제공 할 수는 없습니다).

Here은 gcc-AIX 사양에 대한 링크입니다.

2

공유 라이브러리에서 GDB를 실행하지 않으려면 실행 파일에서 실행하십시오.

실행 파일이 공유 라이브러리를로드하면 GDB는이를 알 수 있습니다.

관련 문제