2012-12-22 53 views
-1

任何人都知道調試信息內的相對路徑取決於編譯器或makefile?調試信息中的相對路徑是否依賴於編譯器或生成文件?

我喜歡相關的信息,因爲我可以把我的項目無處不在;

但是有時,調試器由於不匹配路徑而無法找到源代碼。

我不知道誰在調試信息中使用相對路徑或絕對路徑進行控制,可能是編譯器,也許是makefile,也許都是這樣;

有人知道嗎?

回答

0

你的問題是周圍的邊緣有點模糊,但是......

隨着編譯器和調試器使用,相對或絕對被傳遞到編譯器的路徑所確定的選擇。所以如果你想改變行爲,你必須改變調用編譯器的命令,這意味着改變makefile中的命令。

0

有人知道嗎?

您沒有在您的問題中提供足夠的詳細信息來回答它究竟是

Makefile定義你的化妝會執行命令。

  • 如果執行$(CC) -g -c foo.c -o foo.o,那麼大多數編譯器會 編碼相對路徑foo.c到目標文件。一些編譯器 也將編碼當前編輯目錄,所以調試器可以 發現,原來foo.c您複製二進制 其他地方即使(gcc在Linux上能做到這一點,因爲使用DWARF調試信息將最有其他 編譯) 。另一方面,如果你執行執行$(CC) -g -c /path/to/src-directory/foo.c -o /path/to/obj-dir/foo.o,那麼大多數編譯器會將完整路徑編碼到目標文件中。

+0

謝謝,這幫助; –

相關問題