堆栈和队列在调试器中显示为空。苹果电脑

时间:2018-11-17 06:14:55

标签: c++ xcode macos clion lldb

Screenshot of debugger showing that the queue is empty

当我通过在断点处停止调试程序时,队列和堆栈在没有中断时显示为size = 0,但是其他变量(例如向量)可以正常工作。

MacOS 10.14.1 Mojave Cmake 3.12.3 Xcode C ++编译器LLDB 6.0调试模式

1 个答案:

答案 0 :(得分:0)

该错误是CPP-14918。 解决方法非常简单,这是一件好事!

您必须找到活动的CLion应用程序(可以在各个地方使用)。 例如我的在我的图书馆中 〜/ Library / Application \ Support / JetBrains / Toolbox / apps / CLion / ch-0 / 191.7141.37 / CLion.app

从终端cd到CLion.app目录。 然后CD到'Contents / bin / lldb / renderers / lldb_formatters'

其中包含文件 init .py 您需要对其进行编辑(使用sublime,vim,vi或其他方法),并注释掉第一行中导入lldb之外的所有内容。

所以..

import lldb

#lldb.debugger.HandleCommand('script import lldb_formatters.jetbrains_stl_formatters')
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.StdDequeSynthProvider -x "^std::deque<.+> >(( )?&)?$"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^std::deque<.+> >(( )?&)?$"')
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.StdDeque11SynthProvider -x "^(std::__1::)deque<.+>$"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^(std::__1::)deque<.+>$"')
#
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.StdHashtableSynthProvider -x "^(std::tr1::)unordered_set<.+>.*"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^(std::tr1::)unordered_set<.+>.*"')
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.StdHashtableSynthProvider -x "^(std::tr1::)unordered_map<.+>.*"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^(std::tr1::)unordered_map<.+>.*"')
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb.formatters.cpp.gnu_libstdcpp.StdMapSynthProvider -x "^std::multimap<.+> >(( )?&)?$"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^std::multimap<.+> >(( )?&)?$"')
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.StdSetSynthProvider -x "^std::set<.+> >(( )?&)?$"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^std::set<.+> >(( )?&)?$"')
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.StdSetSynthProvider -x "^std::multiset<.+> >(( )?&)?$"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^std::multiset<.+> >(( )?&)?$"')
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.libcxx_hash_table_SynthProvider -x "^(std::__1::)unordered_(multi)?(map|set)<.+> >$"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^(std::__1::)unordered_(multi)?(map|set)<.+>.*"')
#
#lldb.debugger.HandleCommand('type synthetic add -l lldb_formatters.jetbrains_stl_formatters.stdmap_SynthProvider -x "^(std::__1::)(multi)?(map|set)<.+> >$"')
#lldb.debugger.HandleCommand('type summary add -F lldb_formatters.jetbrains_stl_formatters.SizeSummaryProvider -e -x "^(std::__1::)(multi)?(map|set)<.+> >$"')

无需多说,如果您不喜欢缺少jetbrains stl格式器,则可以取消注释。但是,问题出在那些格式化程序上。

您可能没有得到想要的东西-格式化程序显然还有其他问题-但是您会得到例如。显示的大小。