c – 使用GDB获取lambda的行号
发布时间:2020-12-16 07:07:28 所属栏目:百科 来源:网络整理
导读:我们对段错误进行了回溯,引用了lambda的编译器生成的名称: (gdb) bt#0 std::_Function_handlerstd::functionbool()(),bold::AdHocOptionTreeBuilder::buildTree(bold::Agent*)::__lambda59::_M_invoke(const std::_Any_data ) (__functor=...) at /usr/incl
我们对段错误进行了回溯,引用了lambda的编译器生成的名称:
(gdb) bt #0 std::_Function_handler<std::function<bool()>(),bold::AdHocOptionTreeBuilder::buildTree(bold::Agent*)::__lambda59>::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/4.8/functional:2057 #1 0x08146d2c in operator() (this=<optimized out>) at /usr/include/c++/4.8/functional:2464 ... 指定的名称为粗体:: AdHocOptionTreeBuilder :: buildTree(bold :: Agent *):: __ lambda59.但是,你可以告诉该文件中有很多lambda!有没有办法将生成的函数名称映射到源代码中的行号?我们有其他函数的行号,但是在这里它只被引用为std :: _ Function_handler<>的类型参数. 解决方法
链接器选项-Map mapfile应该为您提供显示每个函数源自何处的信息,包括lambda.如果程序是使用debug info -g编译的,那么nm –line-numbers也可以工作.
另外,我认为你可以在GDB中使用set print symbol-filename on,然后评估& bold :: AdHocOptionTreeBuilder :: buildTree(bold :: Agent *):: __ lambda59 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |