首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于库,GDB只在头文件中看到源文件,而.cpp文件中的源文件不可用。

对于库,GDB只在头文件中看到源文件,而.cpp文件中的源文件不可用。
EN

Stack Overflow用户
提问于 2013-05-01 20:03:16
回答 1查看 3.4K关注 0票数 3

我正在使用gdb来调试针对静态库编译的程序。库和程序都用调试符号编译。对于这个库,gdb 只看到在 .h 文件中实现的源代码,而没有看到在 .cpp 文件中实现的源代码。我想知道为什么?

  • 例如 (gdb)信息来源 只列出来自该库的头文件,而不列出.cpp文件。
  • 我能够将断点设置为在.cpp文件中实现的某些函数。例如,gdb理解以下命令: (gdb)中断组织::Qhull::runQhull, 但是,不可能在该函数的正文中调试代码。(只有使用stepi命令在汇编程序级别上逐步完成单个指令是可能的。)另一方面,调试器能够看到在头文件中实现的函数代码。
  • backtrace命令报告说,对于前面提到的runQhull函数,“没有可用的符号表”: (gdb)在orgQhull::Qhull::runQhull(orgQhull::RboxPoints const&,const*) () ()中回溯跟踪完整#0 0x0000000000004d361a,没有符号表信息可用。#10x000000000049573a在ConvexHull::ConvexHull (this=0x7fffffffcb70,tree=.,begin=.,end=.)在/home/filip/fel/dp/sandbox/src/populating_octomap/include/ConvexHull.h:40

这是什么原因?欢迎任何建议!

一些细节:

  • 所讨论的库是Qhull的libqhullcpp.a,源代码位于git://gitorious.org/qhull/qhull.git
  • 系统:Ubuntu12.04.2LTS与GNU/Linux3.2.0-40-Generic64-UbuntuSMP x86_64
  • gcc (Ubuntu/Linaro 4.6.3 -1 ubuntu5)4.6.3
  • GNU (Ubuntu/Linaro7.4-2012.04-0ubuntu2.1) 7.4-2012.04
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-01 23:10:40

这是什么原因?

任一

  • 您已经构建了没有-g标志的库,或者
  • 在库构建之后,您已经删除了它(这是非常不可能的)。

检查您的库构建日志。你相信你是用-g构建的,但你很可能错了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16325562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档