2014-12-14 2 views
1

Я использую LLDB в первый раз. Я бегу MacOSX Mavericks. По какой-то причине я не могу заставить LLDB печатать любые строки исходного кода. Скорее, выход представляет собой набор команд сборки. Как мне «исправить» это, чтобы вместо этого отобразить код?Выход терминала LLDB

[c_src]> lldb a.out

Текущий исполняемый набор в 'a.out' (x86_64).
(lldb) точка останова устанавливается -n основной
Breakpoint 1: где = a.out основной, адрес = 0x0000000100000d60
(lldb) запустить
Процесс запущен 54010: a.out (x86_64)
Процесс 54010 остановил
* нить # 1: TID = 0x202742, 0x0000000100000d60 a.out main, queue = com.apple.main-thread, stop reason = breakpoint 1.1 frame #0: 0x0000000100000d60 a.out главный
a.out`main: -> 0x100000d60: pushq% РСП 0x100000d61: MOVQ% РСП, РСП% 0x100000d64: SubQ $ 2032, % rsp 0x100000d6b: movq 4766 (% rip),% rax; (Недействительными *) 0x00007fff72d37420: __stack_chk_guard

(lldb) сек

Процесс 54010 остановился * нить # 1: TID = 0x202742, 0x0000000100000d61 a.out main + 1, queue = 'com.apple.main-thread, stop reason = instruction step into
frame #0: 0x0000000100000d61 a.out
основной + 1 a.out `основной + 1:
-> 0x100000d61: MOVQ% RSP,% RBP
0x100000d64: SubQ $ 2032,% RSP
0x100000d6b: MOVQ 4766 (% рИП),% Rax; (Недействительными *) 0x00007fff72d37420: __stack_chk_guard 0x100000d72: MOVQ (% RAX),% RAx

Я пытаюсь получить команду "S", чтобы показать, где она шагнула в коде.

ответ

2

Похоже, что вы не создали свой файл a.out с отладочной информацией. Например, если lldb имел информацию об отладке для a.out, он бы напечатал исходную строку при представлении точки останова на main.

Если вы строите свой a.out вручную, помните флаг -g. Если вы используете Xcode, обязательно установите формат отладки в DWARF.

+0

Это работает. Не могу поверить, что я забыл -g в командной строке. – zilitron

Смежные вопросы