【问题标题】:lldb application on mac osmac os 上的 lldb 应用程序
【发布时间】: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

标签: macos lldb


【解决方案1】:

看起来您的进程已退出(状态为 45)而没有设置任何 GUI。尝试在退出时设置断点:

(lldb) break set -n exit

在你运行之前,然后运行,你应该打断点。查看当时的回溯可能会告诉您为什么它过早退出。

顺便说一句,如果您熟悉 gdb,此页面可能会有所帮助:

http://lldb.llvm.org/lldb-gdb.html

【讨论】:

  • 另外,虽然这很可能不是您的问题的原因,但您不需要指定 Contents/MacOS/... 应用程序路径的一部分,只需将 lldb 设置为.app 它将找出二进制文件。
猜你喜欢
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多