기본 컴파일러 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);
}
모든 것은 지금 작동합니다! 멋진 멋진! –
위와 같이 실행하면, GDB에서'SYMBOL'을 수행 할 때 이름 디맹 글링과 그 값과 관련하여 D 기호가 제대로 표시되지 않습니다. 이것은 ibclaw의 GDB의 현재 상태입니까, 아니면 놓친 것입니까? –
GDB는 아직 모든 D 기호를 다듬을 수 없습니다. GDC 프로젝트의 핵심 개발자 인 Iain Buclaw는 최근 몇 가지 개선 작업을 수행하여 곧 주요 GDB 코드에 통합되어 많은 도움이 될 것입니다. GDC로 D 프로그램을 컴파일하려고 했습니까? – DejanLekic