2014-01-09 3 views
6

기본 컴파일러 GCC 4.8.1을 사용하여 우분투 13.10 x86_64에 github에 Ian Buclaw (ibuclaw) GDB 분기를 성공적으로 빌드하고 설치했습니다.GDB로 디버깅 D 프로그램 기호를 찾을 수 없음

bin 하위 디렉토리에서 ld 파일을 제거해야했습니다. 링크 단계에서 DMD가 sysroot 문제에 대해 불평합니다.

그런 다음 테스트 프로그램을 컴파일하고 GDB를 통해 실행하면 문제가 발생합니다.

나는 break main, 실행 할 수 있으며, GDB는 main의 시작 부분에 중지하지만 next을 할 때 나는

Single stepping until exit from function main, 
    which has no line number information. 
    0x00007ffff760ede5 in __libc_start_main() from 
    /lib/x86_64-linux-gnu/libc.so.6 

이의이 여기서 일하기로 GDB ibuclaw되지 않습니다 원치 않는 출력을 얻을?

내 테스트 프로그램은 경고 나 오류없이

dmd -debug -g -gs -wi t_array.d -oft_array 

로 컴파일되었다. 또한 C

dmd -debug -g -gc -gs -wi t_array.d -oft_array 

같은 결과 척 을 시도했습니다.

또한 b 다음에 탭을 사용하면 완료 목록 인 의 기호 대부분이 디맹 글링되지 않습니다.

내 테스트 프로그램 monodevelop와 (안 D에 대한 gdb를 debuger와) GDB 디버거와 나를 위해 잘

같은
import std.stdio, std.algorithm; 

void main(string args[]) { 
    int[] x; 
    writeln(x.sizeof); 

    if (x) { 
     writeln("Here!"); 
    } else { 
     writeln("There!"); 
    } 

    int xx[2]; 
    auto xc = xx; 
    xc[0] = 1; 
    writeln(xx); 
    writeln(xc); 
    int[2] xx_; 


    auto hit = x.find(1); 
    if (hit) { 
     writeln("Hit: ", hit); 
    } else { 
     writeln("No hit"); 
    } 
    int[2] z;     // arrays are zero initialized 
    writeln(z); 

    assert([].ptr == null); 
    assert("ab"[$..$] == []); 
    auto p = "ab"[$..$].ptr; 
    writeln(p); 
    assert(p != null); 
} 

답변

3

작품을 보이는, 당신은 명령 대신 휴식 주를 시작 사용해야합니다. 너의 세부 사항 dlangs 포럼 스레드 : http://forum.dlang.org/thread/[email protected]

+0

모든 것은 지금 작동합니다! 멋진 멋진! –

+0

위와 같이 실행하면, GDB에서'SYMBOL'을 수행 할 때 이름 디맹 글링과 그 값과 관련하여 D 기호가 제대로 표시되지 않습니다. 이것은 ibclaw의 GDB의 현재 상태입니까, 아니면 놓친 것입니까? –

+0

GDB는 아직 모든 D 기호를 다듬을 수 없습니다. GDC 프로젝트의 핵심 개발자 인 Iain Buclaw는 최근 몇 가지 개선 작업을 수행하여 곧 주요 GDB 코드에 통합되어 많은 도움이 될 것입니다. GDC로 D 프로그램을 컴파일하려고 했습니까? – DejanLekic

관련 문제