【发布时间】:2015-01-07 20:17:54
【问题描述】:
我想学习在我的 Mac OSx (Yosemite) 上使用 lldb 调试器,因为我似乎无法让 gdb 正常工作(通过自制软件)。但是我遇到了一个奇怪的问题,想知道是否有人可以指出我正确的方向。基本上在我将应用程序加载到 lldb 并执行运行之后,它只是返回命令提示符,而没有为所述应用程序打开 GUI。下面附上尝试的摘录。有什么想法吗?
% lldb /Applications/Navicat\ for\ SQL\ Server.app/Contents/MacOS/Navicat\ for\ SQL\ Server
(lldb) target create "/Applications/Navicat for SQL Server.app/Contents/MacOS/Navicat for SQL Server"
Current executable set to '/Applications/Navicat for SQL Server.app/Contents/MacOS/Navicat for SQL Server' (x86_64).
(lldb) run
Process 2881 launched: '/Applications/Navicat for SQL Server.app/Contents/MacOS/Navicat for SQL Server' (x86_64)
Process 2881 exited with status = 45 (0x0000002d)
(lldb)
【问题讨论】:
-
附注:当您尝试调试一个进程并且它立即以代码 45 存在时,该进程很可能在某个时候调用了
ptrace(PT_DENY_ATTACH...),将您的调试器踢出。解决这个问题的最好方法是在 ptrace 存根上设置一个断点并强制它返回零。 -
任何想了解更多关于@Sonic 评论的详细信息的人,请阅读此coredump.gr/articles/ios-anti-debugging-protections-part-1