Mac OSX下的lldb崩溃 我们在Linux和Mac OSX上构建了一个C++程序。在Mac上使用clang-3.5和lldb 370.0.42

Mac OSX下的lldb崩溃 我们在Linux和Mac OSX上构建了一个C++程序。在Mac上使用clang-3.5和lldb 370.0.42,linux,macos,lldb,Linux,Macos,Lldb,首先,lldb确实在mac上工作,但对于我们的代码,它在运行时崩溃 (断点设置为main)。错误是: lldb失去了调试服务器连接 同样的代码也适用于Linux 万一这是我们在全局中做的不好的事情,我们怎么能在程序中的第一个点设置断点,即初始化所有全局变量的代码 其次,让我们假设lldb确实有问题。自2016年以来,有许多投诉都没有得到答复,许多投诉都在lldb名单上。例如: 如果lldb由于未指明的原因无法在Mac上使用我们的代码,是否有任何解决方法,比如获取特定的旧版本,或者使用gdb?调

首先,lldb确实在mac上工作,但对于我们的代码,它在运行时崩溃 (断点设置为main)。错误是:

lldb失去了调试服务器连接

同样的代码也适用于Linux

万一这是我们在全局中做的不好的事情,我们怎么能在程序中的第一个点设置断点,即初始化所有全局变量的代码

其次,让我们假设lldb确实有问题。自2016年以来,有许多投诉都没有得到答复,许多投诉都在lldb名单上。例如:

如果lldb由于未指明的原因无法在Mac上使用我们的代码,是否有任何解决方法,比如获取特定的旧版本,或者使用gdb?调试程序崩溃时很难调试


我们很想给你一个MWE,但这并不容易。该程序正在使lldb崩溃。在我们有一个使调试器崩溃的最小片段之前,删除片段将是一项巨大的工作。所以我们先问,但如果没有人对方法有任何建议,我们可以尝试分而治之。

如果没有更多细节,很难说这里有什么问题。你说lldb崩溃了。如果是这样,应该有一个lldb崩溃日志(在macOS上,这些日志存储在~/Library/Logs/diagnosticreport中)。如果您将故障日志中的错误提交到bugzilla或,有人会查看。OTOH,“debug server connection丢失”错误消息仅在调试代理(macOS上的debugserver)意外崩溃或退出时才会发出。该崩溃日志将位于同一位置,但名称为debugserver。同样,用崩溃日志提交一个bug,有人会看一看。@Jim,可以,但是如果代码在处理全局文件时崩溃,有没有办法在代码的开头设置一个断点?看看是哪一个好。如果它在加载代码时死亡,那完全是lldb的错。如果它在全局上消亡,可能仍然是他们的错(他们应该在我们的错误中幸存下来),但至少我们可以识别错误。如果您将
target.process.stop on sharedlibrary events
设置为true,那么lldb将在每次共享库加载时停止(包括初始加载)但是,lldb会在加载共享库后得到通知,因此这可能太晚了。您还可以查看
lldb dyld
日志通道(或者
dwarf lookup
)的日志输出,看看它是否会告诉您崩溃前它正在处理什么。但如果真的是debugserver崩溃了,那不是因为符号查找,因为debugserver不做任何符号处理。你也可以在macOS上运行gdb:它应该可以正常工作。