如何在c++头文件上使用gdb
How to use gdb on c++ header files?
我试着在网上搜索这个问题,但似乎我找不到一个好的解决方案。嗯,我正在尝试使用gdb来调试我的c++程序。该程序由一个简单的main.cpp和一个model.h组成。编译命令是
g++ -Wall -g -c main.cpp
g++ -Wall -g main.o -o OUTPUT
由于几乎所有算法都存储在model.h中,因此我需要调试该头文件而不是cpp文件。然而,每当我试图在标题上放置一个断点时,比如
tbreak model.h:163
gdb总是给我一个消息"No source file named TNFmodel.h"。
在GDB中的另一个问题断点中,我看到了一个解决方案,即通过"dir"将包含头文件的文件夹添加到库中。但是我的头文件已经在源文件夹中,并且在尝试
之后dir ./
问题仍然存在。
有人知道怎么回事吗?如何使用gdb调试头文件?
正如https://stackoverflow.com/users/760746/nobody所建议的那样,一种确保头文件在源文件中的方法是通过检查
来对其进行检查。info sources
确保头文件本身在源文件中(在我的情况下,问题是头文件名称中的字母大小写混淆了,不知怎么的,它在我的mac上进行了编译),在头文件的行中插入断点工作得很好。
尝试像这样在你的类/方法名后面加上break:
break class::method
我发现文件名有时被缩短了。使用info sources
,我能够找到GCC使用的缩短名称。当我使用缩短的文件名设置断点时,GDB会正确设置断点。
例如,将文件CommonLibraryheadersEndian.h
更改为COM~2headersEndian.h
相关文章:
- 如何使 gdb 仅输出到文件
- C++代码生成核心文件,就像 gdb >> gcore 一样
- GDB / C++ - 根据循环条件将多个变量记录到输出文件中
- 在远程嵌入式设备上使用核心文件的 GDB - 如何获取有关回溯的更多信息?
- 忽略来自 GDB(终端)中的包含/库文件的调试消息
- 如何在启动过程中崩溃时使用 gdb 调试可执行文件
- GDB错误不以可执行格式:未识别的文件格式
- 调试多个GDB文件
- GDB Cygwin 不会将输出重定向到文件
- GDB 调试器访问未找到的文件
- GDB无法加载,因此文件和错误没有此类文件或目录
- 在OS Ubuntu中运行GDB时,如何导出阀门值为文本文件
- gdb 7.5.1调试通过g 4.7.2构建的可执行文件的问题
- gdb:如何将共享库的日志文件重定向到 gdb 输出
- CentOS 上的 GDB 忽略 gdbinit 文件
- 使用GDB中的多个链接文件进行调试
- GDB 如何处理大型 (>1 Gb) 调试文件?
- 使用 GDB 将数组内容打印到文件
- 在共享对象文件中设置 GDB 断点
- 没有在gdb中加载带有breakpad核心文件的符号