Я запустил отладчик LLDB из командной строки с целевым автономным исполняемым кодом C и установил начало метода main()
в качестве точки останова.LLDB отладчик шаг разрешения
После запуска приложения в отладчике я увидел, что он останавливается на конвейере, а не на линии кода C. Кроме того, каждый раз, когда я выходил вперед, разрешение шага представляет собой единую конвейерную линию.
Вот выход lldb:
(lldb) target create "./a.out"
Current executable set to './a.out' (x86_64).
(lldb) breakpoint set --name main
Breakpoint 1: where = a.out`main, address = 0x0000000100000e80
(lldb) run
Process 2023 launched: './a.out' (x86_64)
Process 2023 stopped
* thread #1: tid = 0xfca5, 0x0000000100000e80 a.out`main, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000e80 a.out`main a.out`main:
-> 0x100000e80 <+0>: pushq %rbp
0x100000e81 <+1>: movq %rsp, %rbp
0x100000e84 <+4>: pushq %r15
0x100000e86 <+6>: pushq %r14
(lldb) n
Process 2023 stopped
* thread #1: tid = 0xfca5, 0x0000000100000e81 a.out`main + 1, queue = 'com.apple.main-thread', stop reason = instruction step over
frame #0: 0x0000000100000e81 a.out`main + 1
a.out`main:
-> 0x100000e81 <+1>: movq %rsp, %rbp
0x100000e84 <+4>: pushq %r15
0x100000e86 <+6>: pushq %r14
0x100000e88 <+8>: pushq %r12
(lldb) n
Есть ли способ я могу изменить разрешение шаг для одного исходного C строки, а затем сборочной линии (как я получаю при запуске lldb из Xcode)?
Вы компилировались с помощью '-g' или подобного? –
компиляция кода с флагом -g, похоже, устранила проблему. что этот параметр представляет в компиляторе clang? – Zohar81
В gcc, clang и др. '-g' разрешает отлаживать символы в сгенерированном коде - вы обычно это хотите для любых отладочных или профилирующих сборок (а иногда и для релизов). –