程序集 - 无法设置断点 lldb

2024-03-18

我用这些选项组装了nasm -O0 -g -f macho64但 lldb 抱怨“无法将断点解析到任何实际位置。”当我尝试在文件中的行号处设置任何断点时。

我已经开始尝试学习 OS X 的 64 位汇编,但到目前为止这确实是一个挑战,似乎几乎没有任何学习资源。


您的汇编器可能没有为您创建的二进制文件发出任何调试信息。你可以通过运行来判断dwarfdump --debug-line在你的.o文件或在.dSYM为您的二进制文件提供捆绑包(如果有的话)。

将二进制文件加载到 lldb 并运行disassemble -n function-name命令。这将向您显示程序集 - 然后您可以使用以下命令设置断点breakpoint set -a address。默认情况下,lldb 将在关闭地址空间随机化 (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) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序集 - 无法设置断点 lldb 的相关文章

随机推荐

  • 是否可以在视图中调用存储过程?

    已提出有关 sql server 的类似问题here https stackoverflow com questions 916784 how to call stored procedure in a view 我想知道在 MySql 中
  • SQL 检查数据库是否为空(没有表)

    我需要使用 SQL 查询检查数据库是否完全为空 没有表 如何才能做到这一点 谢谢您的帮助 SELECT COUNT DISTINCT table name FROM information schema columns WHERE tabl
  • 使用D3读取csv返回html而不是csv数据

    我在脚本标签中有以下 d3 代码 d3 csv data csv function error data data forEach function d console log data 0 d date parseDate d date
  • 设置 UIView 的框架不起作用

    我在 iOS 7 中遇到了框架属性的问题 我想调整一些 UIView 的大小viewDidLoad 我的方法UIViewController 但如果我这样做int screenHeight UIScreen mainScreen bound
  • 有没有办法检测手机上是否有硬件键盘?

    我见过其他问题 例如硬件键盘事件 https stackoverflow com questions 4883168 hardware keyboard event 但Mango 没见过这个 有什么方法可以查出手机是否有硬件键盘 Use t
  • Firebase Firestore 查询得到一个结果

    我正在寻找最好的方法 1 查询单个结果 或者2 从查询中提取第一个结果 tried collection 0 and collection pop or collection shift 没有任何作用 我真的不喜欢我正在使用的代码 但它有效
  • 使用 JOGL 进行全屏摆动

    我正在尝试制作一个全屏呈现的 Swing 应用程序 遵循此处的描述http download oracle com javase tutorial extra fullscreen exclusivemode html http downl
  • 错误:没有匹配的函数可供调用

    我想在另一个类中使用另一个类的方法 但出现以下错误 问题是什么 TIA 错误 没有匹配的函数可用于调用 PositionInfo PositionInfo 这是我的代码 PositionInfo Pos double metr Pos Ge
  • 如何设置图片的大小?

    I have 飞溅 png并希望该图像全部出现在屏幕上 就像fitXY for ImageView 飞溅 png尺寸为 480x767 我必须在代码中更改什么 public class BitmapConfigView extends Li
  • PHP 中 $variable->something 的故事是什么?

    我见过这种方法被广泛使用 尤其是在 SimpleXML 中 Is this row gt unixtime 和这样做一样吗 row unixtime 这叫什么 为什么 如何使用它 使用 PHP 进行面向对象编程 https stackove
  • 使用 REST API 通过 PHP 连接到 VCenter 身份验证错误

    我按照官方 vSphere 站点中的说明从服务器和答案中获取信息这里的另一个用户 https stackoverflow com a 49324757 12013253 据我了解 首先我必须获取会话id cis id 但结果我得到 null
  • Django 模板扩展和 CSS

    我有这样的基本模板 当我刷新页面时 此文本会记录在日志中 01 Dec 2011 18 22 00 GET search HTTP 1 1 200 2760 01 Dec 2011 18 22 00 GET static style css
  • 关闭并打开新窗口后,SSH 密钥在 git bash 上不起作用

    使用以下链接创建 ssh 密钥 https help github com articles generate a new ssh key and adding it to the ssh agent https help github c
  • 逻辑右移、算术右移、循环右移的区别

    我一直在阅读经典的 黑客之乐 但我很难理解逻辑右移 算术右移和右旋转之间的区别 如果疑问看起来太简单 请原谅 首先记住机器字的大小是固定的 说 4 您的输入是 a b c d 然后将所有内容向左推一位即可得到 b c d X 问题 X 应该
  • 在javascript中调用java方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试在 javascript 中调用 java 方法 java类驻留在服务器端 示例 Java 代码是 public class
  • 按类前缀定位元素

    假设我有以下元素 div class home div class tab231891230 div div class tab121232441 div div class tab123134545 div div 如何使用 jQuery
  • 查找二维 numpy 数组中的共同元素

    如果我有两个 或更多 二维数组 如何在给定行号的情况下仅获取数组之间的公共元素 例如 我有以下格式的数组 time position velocity acceleration 我想让两个数组只具有相同的时间元素 所以第 0 行 我可以使用
  • 使用 wmi win32 类检查可用端口?

    我正在使用 inno setup 来制作安装文件 它需要提取本地 IP 地址 我可以通过查询 Win32 NetworkAdapterConfiguration 来完成 并检查特定端口是否打开以供软件运行 我目前正在寻找答案 我意识到 WM
  • 将我的 ASP.NET MVC 页面另存为 pdf

    如何将 ASP NET MVC 页面保存为 PDF 有第三方库可以为您提供非常好的保真度 我写这个帖子 http blog muhimbi com 2010 08 convert sharepoint html pages to pdf h
  • 程序集 - 无法设置断点 lldb

    我用这些选项组装了nasm O0 g f macho64但 lldb 抱怨 无法将断点解析到任何实际位置 当我尝试在文件中的行号处设置任何断点时 我已经开始尝试学习 OS X 的 64 位汇编 但到目前为止这确实是一个挑战 似乎几乎没有任何