gpt4 book ai didi

c++ - 对于库,GDB 只能看到头文件中的源代码,而 .cpp 文件中的源代码不可用

转载 作者:太空宇宙 更新时间:2023-11-04 11:55:28 24 4
gpt4 key购买 nike

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

  • 例如

    (gdb) info sources

    仅列出该库中的头文件,没有 .cpp 文件。

  • 我能够为在 .cpp 文件中实现的某些函数设置断点。例如 gdb 理解这个命令:

    (gdb) break orgQhull::Qhull::runQhull,

    但是,无法调试该函数体内的代码。 (只能使用 stepi 命令逐步执行汇编程序级别的各个指令。)另一方面,调试器能够看到头文件中实现的函数代码。

  • backtrace 命令报告前面提到的 runQhull 函数“没有可用的符号表”:

    (gdb) backtrace full

    #0 0x00000000004d361a in orgQhull::Qhull::runQhull(orgQhull::RboxPoints const&, char const*) ()
    No symbol table info available.
    #1 0x000000000049573a in ConvexHull::ConvexHull (this=0x7fffffffcb70, tree=..., begin=..., end=...)
    at /home/filip/fel/dp/sandbox/src/populating_octomap/include/ConvexHull.h:40

这可能是什么原因?欢迎提出任何建议!

一些细节:

  • 有问题的库是 Qhull 的 libqhullcpp.a,源代码在 git://gitorious.org/qhull/qhull.git
  • 系统:带有 GNU/Linux 3.2.0-40-generic#64-Ubuntu SMP x86_64 的 Ubuntu 12.04.2 LTS
  • gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
  • GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04

最佳答案

What could be the reason for this?

要么

  • 您构建的库没有 -g 标志,或者
  • 您在构建后剥离了库(这不太可能)。

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

关于c++ - 对于库,GDB 只能看到头文件中的源代码,而 .cpp 文件中的源代码不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325562/

24 4 0
文章推荐: javascript - 移动动态网站
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com