2013-06-30 2 views
2

내가디버깅 DMD는을 어디서 찾을 수 있는지 알고 GDB

dmd -debug hello.d 

를 사용하여 컴파일 D 나의 첫 번째 프로그램을 디버깅하기 위해 노력하고있어하지만 난 GDB-7.6을 통해 실행 파일을 실행할 때 보이지 않는다 통해 프로그램을 생성 소스 코드를 읽고 스택 트레이스의 포맷을 디코딩한다.

GDB 디버깅 DMD에서 생성 된 실행 파일이 아직 지원되지 않거나 놓친 적이 있습니까?

답변

8

플래그가 -debug이면 디버그 기호를 사용하는 것과 같지 않은 디버그 코드가 사용됨을 의미합니다. 찾고있는 플래그는 -g 또는 -gc입니다.

컴파일러 플래그에 대한 자세한 내용은 http://dlang.org/dmd-linux.html#switches을 참조하십시오.

+0

확인. 그래서 플래그'-gc'를 추가했지만 여전히 작동하지 않습니다. 이제'warning : 0x7ffff7ffa000에 추가 된 심볼 파일 시스템 제공 DSO에서로드 할 수없는 섹션을 찾을 수 없습니다. '오류가 발생합니다. 'break main' 명령은 실패하지만 실행 중에 Ctrl-C를 누르면 gdb가 사용 가능한 상태가됩니다. –

+0

나는 Emacs를 통해 GDB를 돌리고 있으며, 스택 프레임의 형식도 이맥스를 혼란스럽게 만든다. 스택 프레임을 변경하기 위해 그것들을 클릭 할 수 없습니다. 변수보기는 적어도 Ctrl-C를 누르면 작동합니다. –

+0

간단한 것들을 확인하기 만하면됩니다 : "dmd -gc hello.d"는 "hello"라는 실행 파일을 생성합니다. "gdb ./hello"(터미널에서 곧바로, 이맥을 남겨 둡니다.)는 아마도 더 많은 디버그 라이브러리가 설치 될 것을 요청하는 것을 제외하고는 아무런 에러도 발생시키지 않아야합니다. "run"은 gdb에서 평소와 같이 프로그램을 실행해야합니다. –

관련 문제