c - 如何查看调试可执行文件时包含的头文件 (.h)?
问题描述
我需要验证对头文件的最新更改是否包含在通过 GDB 编译的可执行文件中。基本上我想在可执行文件上运行 gdb 并在头文件中列出源代码。
我试过 gdb load_update_recs (executable) list (只列出我编译的c程序中的行而不是头文件)
我想列出GDB中头文件的源代码
解决方案
调试信息不包括源代码的副本,它包括对文件和行号的引用。因此,如果您更改头文件然后列出源文件,您将看到最新的源文件版本,即使这不是实际编译到您的程序中的版本。从理论上讲,如果 GDB 可以看到源文件在可执行文件之后被修改,则应该警告您,但是,如果由于某种原因时间戳在您的源文件或可执行文件上不起作用/损坏,则可能不会出现此警告。
有了这个警告,如果你刚刚list
GDB 将尝试列出当前位置周围的源代码行,或者如果你没有运行,我认为你的程序中的第一个主源文件(不是头文件)。
您可以做的是提供带有位置list my_header.h:20
的列表,因此列出第 20 行my_header.h
。虽然这只会向您显示该文件的当前内容。
推荐阅读
- c - 使用 dlopen 访问 CMake 生成的动态库
- excel - 使用 Excel VBA 从 URL 获取数据
- tensorflow - ImportError:libcublas.so.10.0:无法打开共享对象文件:没有这样的文件或目录
- maven - mvnw install dockerfile:build failed 在插件中找不到目标'build'
- c - 在 c 套接字编程中使用 write 发送缓冲区
- php - 使用 exec() 启动 myFile.bat 不起作用,但使用命令行运行
- c# - 为序列化 c# 对象返回的 JSON 中计算机之间的差异
- html - 防止在图标转换期间调整按钮大小
- pandas - 将 Pandas 最佳拟合函数转换为 pyspark
- laravel - laravel 路由调用登台服务器上的 loalhost api 文件