C++ 使用LLDB创建std::vector方便变量
在线程堆栈中,我想创建一个方便的变量,该变量使用标准库中的向量构造函数。我已经查阅了变量构造的文档,但它只允许简单的变量 我已尝试以下操作并收到下面列出的错误C++ 使用LLDB创建std::vector方便变量,c++,debugging,gdb,std,lldb,C++,Debugging,Gdb,Std,Lldb,在线程堆栈中,我想创建一个方便的变量,该变量使用标准库中的向量构造函数。我已经查阅了变量构造的文档,但它只允许简单的变量 我已尝试以下操作并收到下面列出的错误 (lldb) expr std::vector<int> $vec_temp(vec.begin(), vec.begin()+mid) error: <user expression 12>:1:6: too few template arguments for class template 'vector' s
(lldb) expr std::vector<int> $vec_temp(vec.begin(), vec.begin()+mid)
error: <user expression 12>:1:6: too few template arguments for class template 'vector'
std::vector<int> $vec_temp(vec.begin(), vec.begin()+mid)
^
note: template is declared here
(lldb)expr std::vector$vec_temp(vec.begin(),vec.begin()+mid)
错误::1:6:类模板“vector”的模板参数太少
标准::向量$vec_temp(向量开始(),向量开始()+mid)
^
注意:模板在这里声明
如果有gdb等价物,那就太好了。二进制文件中是否有符号表示您试图使用的构造函数?我的理解是,当编译和链接完成时,很多STL都消失了,这就是为什么在LLDB中执行它们时,许多表达式不再有效。@merlind鉴于
std::vector
是一个模板类,这种可能性更大。如果任何调试器可以实例化一个<代码> STD::vector < /C>,我会很惊讶,如果那个特定的模板,特别是向量
符号都以\u ZNSt12\u vector\u baseiisaiee
开头。如果运行nm
,您将看到符号列表。如果它不存在,你能尝试一个或制作一些以某种方式使用向量的伪函数吗?@nanofarad我看到了与nm main | grep向量
类似的东西,很多符号都是从\uznst3\u16vectorins\u9allocatorieee
开始的,这样可以吗?