这个答案只是为了强调@Tom Tromey 的评论建议:
set python print-stack full
这是 GDB 在 GDB python 漂亮打印机中引发异常时打印完整堆栈跟踪所需要的,例如:
Python Exception <class 'gdb.error'> No type named >.:
但没有任何关于这是在哪里提出的信息。使用上面的配置,人们会得到这样的东西:
@0x7fffffff91f0: Traceback (most recent call last):
File "/home/user/.gdbprinters/eigen/printers.py", line 341, in lookup_function
return pretty_printers_dict[function](val)
File "/home/user/.gdbprinters/eigen/printers.py", line 313, in <lambda>
pretty_printers_dict[re.compile('^Eigen::RefBase<.*>$')] = lambda val: EigenMatrixPrinter("Matrix", cast_eigen_block_to_matrix(val))
File "/home/user/.gdbprinters/eigen/printers.py", line 306, in cast_eigen_block_to_matrix
return val.cast(gdb.lookup_type(type[begin:end]))
gdb.error: No type named >.
{<Eigen::RefBase<Eigen::Ref<Eigen::Array<autodiff::detail::Real<1, double>, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > >> = {<Eigen::MapBase<Eigen::Ref<Eigen::Array<autodiff::detail::Real<1, double>, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> >, 0>> = {<Eigen::ArrayBase<Eigen::Ref<Eigen::Array<autodiff::detail::Real<1, double>, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > >> = {<Eigen::DenseBase<Eigen::Ref<Eigen::Array<autodiff::detail::Real<1, double>, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > >> = {<Eigen::DenseCoeffsBase<Eigen::Ref<Eigen::Array<autodiff::detail::Real<1, double>, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> >, 2>> = {<Eigen::DenseCoeffsBase<Eigen::Ref<Eigen::Array<autodiff::detail::Real<1, double>, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> >, 0>> = {<Eigen::EigenBase<Eigen::Ref<Eigen::Array<autodiff::detail::Real<1, double>, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > >> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, m_data = 0x555555c76580, m_rows = {m_value = 28}, m_cols = {<No data fields>}}, m_stride = {m_outer = {<No data fields>}, m_inner = {<No data fields>}}}, m_object = Eigen::Array<autodiff::detail::Real<1, double>,0,1,ColMajor> (data ptr: 0x0) = {[0] = <error reading variable>