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>,我会很惊讶,如果那个特定的模板,特别是 < /C> >,在任何编译单元中都没有被实例化。嗯,我不确定,我是C++初学者,用LLDB调试。如何检查二进制文件的符号表?另外,它应该如何显示构造函数是否存在?@Interlooper在我的机器上,
向量
符号都以
\u ZNSt12\u vector\u baseiisaiee
开头。如果运行
nm
,您将看到符号列表。如果它不存在,你能尝试一个或制作一些以某种方式使用
向量的伪函数吗?@nanofarad我看到了与
nm main | grep向量
类似的东西,很多符号都是从
\uznst3\u16vectorins\u9allocatorieee
开始的,这样可以吗?