Я изучаю язык ассемблера на Macbook x86_64 с macOS 10.14. Версия nasm - 2.14, а версия lldb - 11.38.2.
Мой исходный код очень прост:
SECTION .data
EatMsg: db "Hello World", 0x0a
EatLen: equ $-EatMsg
SECTION .bss
SECTION .text
global _start
_start:
nop
mov rax,0x2000004
mov rdi,1
mov rsi,EatMsg
mov rdx,EatLen
syscall
mov rax,0x2000001
mov rdi,0
syscall
Я собираю этот файл, используя
nasm -f macho64 -F dwarf helloworld.asm
ld -e _start -no_pie -o helloworld helloworld.o -lSystem
Но когда я использую lldb:
lldb helloworld
(lldb)b helloworld.asm:16
Он говорит:
Breakpoint 1: no locations (pending).
WARNING: Unable to resolve breakpoint to any actual locations.
Я видел Невозможно установить точки останова lldb и Можно ли отладить сборку x64 на Mac OS?, и я пробовал эти ответы (например, -g
), но безрезультатно.
Я не уверен, что это имеет значение для lldb (у меня сегодня нет под рукой OS / X), но вы пробовали lldb ./helloworld
, а не lldb helloworld
?
@MichaelPetch Я пробовал и то, и другое, но без птичьего полета
Вы уверены, что пробовали
nasm -f macho64 -F dwarf -g helloworld.asm
?