이 문제는 일반적으로 문제 코딩 링커 (LD)에 의한 .debug_line 내 섹션의 재배치 테이블 문제 보여주는 - 중복 메모리 복사합니다. 툴체인은 버그 수정과 재구성이 필요합니다.
프로그램로드 및 실행에 영향을주지 않지만,이 문제는 주소/기호가 일치하지 않아 디버깅을 불가능하게합니다. 다음은 예제이며 코드는 0x0038ca82 (잘못된 링커의 경우)에서 엉망입니다.
0038ca60 62 6c 69 63 2e 68 00 01 00 00 68 65 61 70 5f 6d |blic.h....heap_m|
0038ca70 67 72 5f 70 75 62 6c 69 63 2e 68 00 02 00 00 00 |gr_public.h.....|
0038ca80 00 05 32 00 40 18 02 94 32 00 40 00 01 01 00 05 |[email protected]@.....|
0038ca90 02 94 32 00 40 00 01 01 00 05 02 94 32 00 40 00 |[email protected]@.|
0038caa0 01 01 00 05 32 00 40 15 02 b0 32 00 40 00 01 01 |[email protected]@...|
0038cab0 00 05 02 b0 32 00 40 00 01 01 00 05 02 b0 32 00 |[email protected]|
0038cac0 40 00 01 01 00 05 02 c0 32 00 40 94 00 05 40 17 |@[email protected]@.|
정상 LD가 ELF를 초래 :
0038ca80 00 = op_code = DW_LNS_extended_op
0038ca81 05 = op length = 5 bytes
0038ca82 02 = extended_op_code = DW_LNE_set_address
0038ca83 nn nn nn nn = 4-byte address
이된다는 문제가 연결된 ELF에서, 확장 연산 코드 (32 미정)
0038ca82 32 = extended_op_code = Unknown -> mangled line number section
문제 LD는 ELF (망가 행 번호 섹션) 결과 :
0038ca60 62 6c 69 63 2e 68 00 01 00 00 68 65 61 70 5f 6d |blic.h....heap_m|
0038ca70 67 72 5f 70 75 62 6c 69 63 2e 68 00 02 00 00 00 |gr_public.h.....|
0038ca80 00 05 02 80 32 00 40 38 00 05 02 80 32 00 40 18 |[email protected]@.|
0038ca90 00 05 02 90 32 00 40 1a 00 05 02 94 32 00 40 00 |[email protected]@.|
0038caa0 01 01 00 05 02 a0 32 00 40 49 00 05 02 a0 32 00 |[email protected]|
0038cab0 40 15 00 05 02 ac 32 00 40 15 00 05 02 b0 32 00 |@[email protected]|
0038cac0 40 00 01 01 00 05 02 c0 32 00 40 94 00 05 02 c0 |@[email protected]|
소스와 섞음 이 오류가 발생하면 코드가 작동하지 않습니다. 거기에 대한 수정 프로그램이 있습니까? – Jean
예 : "gcc -S"를 사용하여 objdump 대신 어셈블리를 생성하십시오. – paulsm4