首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >11分贝跳过objc_msgSend

11分贝跳过objc_msgSend
EN

Stack Overflow用户
提问于 2015-10-16 15:14:01
回答 2查看 193关注 0票数 3

我正在尝试确定苹果在NSWorkspace上公开的方法是如何在内部工作的,以便尝试解决该方法的一个不幸的副作用(每次您调用它时,它都会写入磁盘)。我可以将lldb附加到我的可执行文件中,并在调用方法时设置一个断点,然后使用si进入objc_msgSend和on,但是我更愿意跳到方法主体之前跳到前面,有什么方法可以为方法主体的开头设置断点,或者在跳转到方法主体之前在objc_msgSend中的指令?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-16 15:18:05

您可以通过如下方式将断点设置到实际的方法主体本身

代码语言:javascript
复制
br s -n "-[NSWorkspace openURL:]"
票数 2
EN

Stack Overflow用户

发布于 2015-10-16 20:17:50

lldb的源代码级step命令将始终为您传递objc_msgSend蹦床代码,停止在目标实现中,而不管实现位于何处。

但是,默认情况下,lldb也会自动退出没有调试信息的方法。这在很大程度上是人们想要的行为,但在这种情况下不是你想要的行为。幸运的是,您可以在给定的步骤中通过以下操作关闭后一种行为:

代码语言:javascript
复制
(lldb) step -a 0

或者通常通过设置控制此操作的全局默认设置:

代码语言:javascript
复制
(lldb) set set target.process.thread.step-in-avoid-nodebug 0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33173916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档