调试信息中的相对路径是否取决于编译器或makefile?

问题描述 投票:0回答:2

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

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

但有时,调试器会因为路径不匹配而找不到源代码。

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

有人确切知道吗?

debugging makefile relative-path
2个回答
0
投票

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

与编译器和调试器I一起使用,相对或绝对的选择由传递给编译器的路径决定。因此,如果您想更改行为,则必须更改调用编译器的命令,这意味着更改 makefile 中的命令。


0
投票

有人确切知道吗?

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

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

  • 如果执行

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

  • 另一方面,如果您

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

© www.soinside.com 2019 - 2024. All rights reserved.