Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 堆栈和队列在调试器中显示为空。雨衣_C++_Xcode_Macos_Clion_Lldb - Fatal编程技术网

C++ 堆栈和队列在调试器中显示为空。雨衣

C++ 堆栈和队列在调试器中显示为空。雨衣,c++,xcode,macos,clion,lldb,C++,Xcode,Macos,Clion,Lldb,当我在断点处停止调试程序时,队列和堆栈显示为size=0,而不是,但其他变量(如vectors)工作正常 MaOS0.141 MOJAVE CUSE3.3.3 XCOD+C++编译器LLDB 6调试模式 < P>错误是CPP 14918。 解决方法非常简单,这是一件好事 您必须找到活动的CLion应用程序(可以在不同的位置找到)。 例如,我的在我的图书馆里 ~/Library/Application\Support/JetBrains/Toolbox/apps/CLion/ch-0/191.71

当我在断点处停止调试程序时,队列和堆栈显示为size=0,而不是,但其他变量(如vectors)工作正常

MaOS0.141 MOJAVE CUSE3.3.3 XCOD+C++编译器LLDB 6调试模式

< P>错误是CPP 14918。 解决方法非常简单,这是一件好事

您必须找到活动的CLion应用程序(可以在不同的位置找到)。 例如,我的在我的图书馆里 ~/Library/Application\Support/JetBrains/Toolbox/apps/CLion/ch-0/191.7141.37/CLion.app

从终端,cd到CLion.app目录。。 然后cd到“Contents/bin/lldb/renders/lldb_formatters”

其中有文件init.py 您需要编辑它(使用sublime、vim、vi或任何东西),并注释掉除第一行的import lldb之外的所有内容

所以

导入lldb
#lldb.debugger.HandleCommand('scriptimport lldb\u formatters.jetbrains\u stl\u 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.sizeSummary provider-e-x“^std::deque>(()?&)?$”)
#
#lldb.debugger.HandleCommand('type synthetic add-l lldb_formatters.jetbrains_stl_formatters.StdDeque11SynthProvider-x“^(std::u 1::)deque$”)
#lldb.debugger.HandleCommand('type summary add-F lldb_formatters.jetbrains_stl_formatters.sizeSummary provider-e-x“^(std::_1::)deque$”)
#
#
#lldb.debugger.HandleCommand('type synthetic add-l lldb_formatters.jetbrains_stl_formatters.StdHashtableSynthProvider-x“^(std::tr1::)无序_set.*”)
#lldb.debugger.HandleCommand('type summary add-F lldb_formatters.jetbrains_stl_formatters.sizeSummary provider-e-x“^(std::tr1::)无序_set.*”)
#
#lldb.debugger.HandleCommand('type synthetic add-l lldb_formatters.jetbrains_stl_formatters.StdHashtableSynthProvider-x“^(std::tr1::)无序_map.*”)
#lldb.debugger.HandleCommand('type summary add-F lldb_formatters.jetbrains_stl_formatters.sizeSummary provider-e-x“^(std::tr1::)无序映射。*”)
#
#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.sizeSummary provider-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.sizeSummary provider-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.sizeSummary provider-e-x“^std::multiset>(()?&)?$”)
#
#lldb.debugger.HandleCommand('type synthetic add-l lldb_formatters.jetbrains_stl_formatters.libcxx_hash_table_SynthProvider-x“^(std:u 1::)无序(多)-(map | set)>$”)
#lldb.debugger.HandleCommand('type summary add-F lldb_formatters.jetbrains_stl_formatters.sizeSummary provider-e-x“^(std::u 1::)无序(多)?(映射|集)。*”)
#
#lldb.debugger.HandleCommand('type synthetic add-l lldb_formatters.jetbrains_stl_formatters.stdmap_SynthProvider-x“^(标准::u 1::)(多)?(映射集)>$”)
#lldb.debugger.HandleCommand('type summary add-F lldb_formatters.jetbrains_stl_formatters.sizeSummary provider-e-x“^(std::_1::)(multi)?(map | set)>$”)
不用说,如果您不喜欢缺少jetbrains stl格式化程序,那么可以取消对行的注释


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

问题是:调试器如何计算大小?std::queue和std::stack都是接受另一个容器作为模板参数的模板。可能调试器无法处理使用此星座图。您可以尝试更深入地挖掘,检查内部
std::deque
(默认容器,如果未提供)的单个成员。比调试器显示的更重要的是容器的行为。尝试分配
st.size()
要查看某个变量…有趣的问题。将来,请发布您的源代码,而不是依赖图像。这允许其他人将您的代码复制并粘贴到他们的IDE中。我看到您运行的是Mac OS X。我得到的输出与您使用Mac OS X和CLion时的输出相同。我怀疑您的环境使用的是XCode和CLang.您可以在Linux上使用真正的gcc/gdb设置来尝试CLion。我希望编译器和调试器的问题比CLion本身更大。CLang的调试器转储对象的方式可能不同于gdb。正如@Aconcagua所述,赋值
st.size()
正确显示队列的大小。谢谢!我已经寻找了3天的解决方案,终于找到了。谢谢。
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)<.+> >$"')