Macos mac操作系统上的lldb应用

Macos mac操作系统上的lldb应用,macos,lldb,Macos,Lldb,我想学习在我的MacOSX(约塞米蒂)上使用lldb调试器,因为我似乎无法让gdb正常工作(通过自制)。然而,我遇到了一个奇怪的问题,不知道是否有人能给我指出正确的方向。基本上,在我将一个应用程序加载到lldb并执行run之后,它只返回命令提示符,而不打开所述应用程序的GUI。下面是这次尝试的摘录。有什么想法吗 % lldb /Applications/Navicat\ for\ SQL\ Server.app/Contents/MacOS/Navicat\ for\ SQL\ Server

我想学习在我的MacOSX(约塞米蒂)上使用lldb调试器,因为我似乎无法让gdb正常工作(通过自制)。然而,我遇到了一个奇怪的问题,不知道是否有人能给我指出正确的方向。基本上,在我将一个应用程序加载到lldb并执行run之后,它只返回命令提示符,而不打开所述应用程序的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),但未安装任何GUI。尝试在退出时设置断点:

(lldb) break set -n exit
在运行之前,请先运行,然后再运行,您应该到达断点。在这一点上查看回溯可能会告诉您为什么它会过早退出

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


此外,尽管这很可能不是问题的原因,但您不需要指定/MacOS/…的内容。。。作为应用程序路径的一部分,只需将lldb交给.app,它就会计算出二进制文件。只是一个旁注:当您尝试调试一个进程时,它立即存在,代码为45,很可能该进程在某个时候调用了
ptrace(PT_DENY_ATTACH…
,将调试器踢出。最好的解决方法是在ptrace存根上设置一个断点,并强制它返回零。任何人想了解@Sonic comment的更多细节,请阅读本文