2014-12-14 4 views
1

저는 처음으로 LLDB를 사용하고 있습니다. MacOSX Mavericks를 운영하고 있습니다. 어떤 이유로 LLDB가 소스 코드의 줄을 인쇄 할 수 없습니다. 오히려 출력은 어셈블리 명령어 세트 인 것 같습니다. 코드를 대신 표시하도록 어떻게 수정합니까? '의 a.out'(x86_64에)에LLDB 터미널 출력

현재 실행 세트의 a.out

는 [c_src]> lldb.
(lldb) 주요
중단 점 (1) -n 설정
중단 = 주, 주소의 a.out = 곳 0x0000000100000d60
(lldb) 실행
프로세스 54010 시작 : a.out의 (x86_64의)
프로세스 pushq %의 RBP는 0x100000d61 : movq의 %의 RSP %의 RBP 0x100000d64는 : $ 2032 subq - : TID = 0x202742, 0x0000000100000d60 a.out`main
메인 main, queue = com.apple.main-thread, stop reason = breakpoint 1.1 frame #0: 0x0000000100000d60 a.out의 a.out> 0x100000d60 가 54,010이
* 스레드 1 정지 % rsp 0x100000d6b : movq 4766 (% rip), % rax; (공극 *) 0x00007fff72d37420는 : __stack_chk_guard

(lldb) S

프로세스 54,010 정지 * 실 # 1 : TID = 0x202742, 0x0000000100000d61 main + 1, queue = 'com.apple.main-thread, stop reason = instruction step into
frame #0: 0x0000000100000d61 a.out
메인 + 1 의 a.out의 a.out `주 + 1 :
-> 0x100000d61 : movq의 %의 RSP %의 RBP
0x100000d64가 : $ 2032 subq %의 RSP
0x100000d6b : movq 4766 (% 립), %의 RAX; (무효 *) 0x00007fff72d37420 : 나는 그것이 코드에서를 강화하고있다 위치를 표시하는 "S"명령을 얻으려고 movq (%의 RAX), %의 RAX

: 0x100000d72을 __stack_chk_guard.

답변

2

디버그 정보로 a.out을 빌드하지 않은 것처럼 보입니다. 예를 들어, lldb가 a.out에 대한 디버그 정보를 가지고 있다면 main에 중단 점을보고 할 때 소스 행을 인쇄했을 것입니다.

a.out을 수동으로 작성하려면 -g 플래그를 기억하십시오. Xcode를 사용하는 경우 디버그 형식을 DWARF로 설정해야합니다.

+0

작동합니다. 나는 명령 행에서 -g를 잊어 버렸다는 것을 믿을 수 없다. – zilitron