Debugging with GDB v10.1中文翻译-第四章 在GDB里运行程序

第四章 在GDB里运行程序(未完成)

当您在GDB下运行一个程序时,您必须在编译它时首先生成调试信息。
您可以在自己选择的环境中,从GDB的默认参数开始(如果有的话)。如果您正在进行本地调试,您可以重定向程序的输入和输出,调试已经运行的进程,或者终止子进程。

4.1 为调试而编译

为了有效地调试程序,需要在编译时生成调试信息。该调试信息存储在目标文件中;它描述了每个变量或函数的数据类型,以及可执行代码中源代码行号和地址之间的对应关系。
为了获取调试信息,请在运行编译器时指定"-g"选项。
要发送给客户的程序使用"-O"编译器选项进行优化编译。然而,一些编译器不能同时处理"-g"和"-O"选项。使用这些编译器,您无法生成包含调试信息的优化可执行文件。
GCC,GNU C/C++编译器,同时支持带或不带"-O"的"-g",这使得调试优化后的代码成为可能。我们建议您在编译程序时始终使用"-g"。你可能认为你的程序是正确的,但是你得寸进尺是没有意义的。有关更多信息,请参见第11章[优化代码],第181页。
GNU C编译器的旧版本允许一个变体选项'-gg'用于调试信息。GDB不再支持这种格式;如果你的GNU C编译器有这个选项,请不要使用它。
GDB知道预处理器宏,可以向您展示它们的扩展(参见第12章[宏],第185页)。如果只指定 -g 标志,大多数编译器不会在调试信息中包含有关预处理器宏的信息。GCC的3.1版以及更高版本的GNU C编译器,如果您使用的是DWARF调试格式,它会提供宏信息,并指定选项 -g3
有关影响调试信息的GCC选项的更多信息,请参见使用GNU编译器集合(GCC)中的"调试程序或GCC的选项"一节。
如果您使用编译器支持的最新版本的DWARF调试格式,您将获得最佳的调试体验。DWARF是目前GDB中最具表现力和最受支持的调试格式。

原文地址:https://www.cnblogs.com/Songhe/p/14543976.html