程序集 - 无法设置断点 lldb
Assembly - Unable to set breakpoints lldb
我使用这些选项组装 nasm -O0 -g -f macho64
但是 lldb 抱怨 "Unable to resolve breakpoint to any actual locations." 当我尝试在文件中的行号处设置任何断点时。
我已经开始尝试学习 OS X 的 64 位汇编,但到目前为止证明这是一个真正的挑战,似乎几乎没有任何学习资源。
您的汇编程序可能没有为您创建的二进制文件发出任何调试信息。您可以通过 运行ning dwarfdump --debug-line
在您的 .o
文件或 .dSYM
包中为您的二进制文件判断是否有。
将二进制文件加载到 lldb 和 运行 disassemble -n function-name
命令。这将向您显示程序集 - 然后您可以使用 breakpoint set -a address
设置断点。默认情况下,lldb 将 运行 您的地址为 space 的二进制文件随机化 (ASLR) 关闭——因此二进制文件每次都会 运行 在相同的地址,而不是随机加载您的程序地址。
一个简单的例子:
% echo 'int main () { }' > a.c
% clang a.c
% lldb a.out
(lldb) target create "a.out"
Current executable set to 'a.out' (x86_64).
(lldb) disass -n main
a.out`main:
a.out[0x100000fb0] <+0>: pushq %rbp
a.out[0x100000fb1] <+1>: movq %rsp, %rbp
a.out[0x100000fb4] <+4>: xorl %eax, %eax
a.out[0x100000fb6] <+6>: popq %rbp
a.out[0x100000fb7] <+7>: retq
(lldb) br s -a 0x100000fb4
Breakpoint 1: address = 0x0000000100000fb4
(lldb) r
Process 32406 launched: '/private/tmp/a.out' (x86_64)
Process 32406 stopped
* thread #1: tid = 0x145576, 0x0000000100000fb4 a.out`main + 4, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000fb4 a.out`main + 4
a.out`main:
-> 0x100000fb4 <+4>: xorl %eax, %eax
0x100000fb6 <+6>: popq %rbp
0x100000fb7 <+7>: retq
0x100000fb8: addl %eax, (%rax)
(lldb)
我使用这些选项组装 nasm -O0 -g -f macho64
但是 lldb 抱怨 "Unable to resolve breakpoint to any actual locations." 当我尝试在文件中的行号处设置任何断点时。
我已经开始尝试学习 OS X 的 64 位汇编,但到目前为止证明这是一个真正的挑战,似乎几乎没有任何学习资源。
您的汇编程序可能没有为您创建的二进制文件发出任何调试信息。您可以通过 运行ning dwarfdump --debug-line
在您的 .o
文件或 .dSYM
包中为您的二进制文件判断是否有。
将二进制文件加载到 lldb 和 运行 disassemble -n function-name
命令。这将向您显示程序集 - 然后您可以使用 breakpoint set -a address
设置断点。默认情况下,lldb 将 运行 您的地址为 space 的二进制文件随机化 (ASLR) 关闭——因此二进制文件每次都会 运行 在相同的地址,而不是随机加载您的程序地址。
一个简单的例子:
% echo 'int main () { }' > a.c
% clang a.c
% lldb a.out
(lldb) target create "a.out"
Current executable set to 'a.out' (x86_64).
(lldb) disass -n main
a.out`main:
a.out[0x100000fb0] <+0>: pushq %rbp
a.out[0x100000fb1] <+1>: movq %rsp, %rbp
a.out[0x100000fb4] <+4>: xorl %eax, %eax
a.out[0x100000fb6] <+6>: popq %rbp
a.out[0x100000fb7] <+7>: retq
(lldb) br s -a 0x100000fb4
Breakpoint 1: address = 0x0000000100000fb4
(lldb) r
Process 32406 launched: '/private/tmp/a.out' (x86_64)
Process 32406 stopped
* thread #1: tid = 0x145576, 0x0000000100000fb4 a.out`main + 4, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000fb4 a.out`main + 4
a.out`main:
-> 0x100000fb4 <+4>: xorl %eax, %eax
0x100000fb6 <+6>: popq %rbp
0x100000fb7 <+7>: retq
0x100000fb8: addl %eax, (%rax)
(lldb)