首页 > 解决方案 > 如何查看调试可执行文件时包含的头文件 (.h)?

问题描述

我需要验证对头文件的最新更改是否包含在通过 GDB 编译的可执行文件中。基本上我想在可执行文件上运行 gdb 并在头文件中列出源代码。

我试过 gdb load_update_recs (executable) list (只列出我编译的c程序中的行而不是头文件)

我想列出GDB中头文件的源代码

标签: cheadergdb

解决方案


调试信息不​​包括源代码的副本,它包括对文件和行号的引用。因此,如果您更改头文件然后列出源文件,您将看到最新的源文件版本,即使这不是实际编译到您的程序中的版本。从理论上讲,如果 GDB 可以看到源文件在可执行文件之后被修改,则应该警告您,但是,如果由于某种原因时间戳在您的源文件或可执行文件上不起作用/损坏,则可能不会出现此警告。

有了这个警告,如果你刚刚listGDB 将尝试列出当前位置周围的源代码行,或者如果你没有运行,我认为你的程序中的第一个主源文件(不是头文件)。

您可以做的是提供带有位置list my_header.h:20的列表,因此列出第 20 行my_header.h。虽然这只会向您显示该文件的当前内容。


推荐阅读