-1

任何人都知道调试信息中的相对路径取决于编译器或 makefile 吗?

我喜欢相关信息,因为我可以把我的项目放在任何地方;

但有时,由于路径不匹配,调试器无法找到源代码。

我不知道谁在调试信息中控制使用相对路径或绝对路径,也许是编译器,也许是 makefile,也许两者兼而有之;

有人确切知道吗?

4

2 回答 2

0

你的问题有点模糊,但是......

使用我使用的编译器和调试器,相对或绝对的选择由传递给编译器的路径决定。所以如果你想改变行为,你必须改变调用编译器的命令,这意味着改变makefile中的命令。

于 2012-12-22T14:30:29.617 回答
0

有人确切知道吗?

您没有在问题中提供足够的详细信息来准确回答。

Makefile定义你的 make 将执行的命令。

  • 如果您执行$(CC) -g -c foo.c -o foo.o,那么大多数编译器会将相对路径编码foo.c到目标文件中。一些编译器还会对当前编译目录进行编码,因此foo.c即使您将二进制文件复制到其他地方,调试器也可以找到原始目录(gcc在 Linux 上会这样做,大多数其他使用DWARF调试信息的编译器也会这样做)。

  • 另一方面,如果您Makefile执行$(CC) -g -c /path/to/src-directory/foo.c -o /path/to/obj-dir/foo.o,那么大多数编译器会将完整路径编码到目标文件中。

于 2012-12-23T00:26:52.040 回答