是否需要source_file.c出现在目录中,我们在哪里尝试为source_file.c的可执行文件执行gdb?

时间:2017-04-11 12:49:53

标签: c linux gdb gnu

我正在尝试使用gdb获取 source_file.c 的最终可执行文件,'list'命令。

它没有按预期工作,因为我只有一个可执行文件,而不是source_file.c在该目录中。这是预期的行为吗?

情景如下:

(gdb) b main
(gdb) list
1   source_file.c: No such file or directory.
in source_file.c

那么,为了尝试为source_file.c的可执行文件启动gdb,是否需要在该pwd中使用source_file.c

1 个答案:

答案 0 :(得分:3)

为调试而编译的二进制文件添加了额外的信息以帮助调试器。这包括每个指令和符号的文件名和行号。但它不包括源代码。

如果您想要源级别调试,您必须拥有源文件,但它不必位于同一目录中。您可以使用"目录some_dir_name"指定包含源文件的目录。命令。

没有源文件,调试器仍然是一个有用的工具。你几乎可以做任何事情。您可以设置断点,反汇编代码,检查内存等。但它不会显示代码或变量名称。一个不起作用的命令是" list。"装配等效于"反汇编。"

有一些可能在没有源文件的情况下调试的正当理由。我花时间在一个表面上只有汇编调试器的操作系统上工作。但是我可以访问源代码来指导我的方式。但在今天的世界中,它通常更容易避免。

GDB还支持远程调试。这将允许您在具有代码的计算机上运行gdb。

如前所述,该文件有一个很好的描述:https://www.sourceware.org/gdb/current/onlinedocs/gdb/Source-Path.html