簡體   English   中英

gdb找不到clang ++編譯的源文件

[英]gdb doesn't find source files compiled by clang++

當使用clang ++編譯我的項目時,目標代碼中顯然沒有包含源文件的路徑。 這意味着gdb無法找到用於顯示代碼的源文件。 對於特定的實例,我可以使用gdb的directory命令添加目錄,但是我的項目有很多源目錄,這很快就很煩人。

當我將配置切換為使用g ++時,gdb只會找到我的所有源文件。

此功能在Snow Leopard上可以使用clang ++ 2.9,但是在Lion上不能與clang ++ 3.1一起使用。 我有XCode 4.3.2。

是否有一個clang選項可以強制在目標文件中使用完整路徑? 我的配置是否可能有其他問題?

我發現了這個問題:使用分層makefile構建項目時,會發生問題。 如果從父目錄(在我的makefile中: make -w -C sub-dir )構建了子目錄,則gdb無法打開源文件。 當更改為子目錄並僅為此目錄調用make時,gdb會找到源。 您可以通過在生成的目標文件中搜索構建路徑來驗證這一點。 我使用了strings object-file | grep $HOME strings object-file | grep $HOME

我還注意到:對於一個目標文件來說,這不是發生的:該文件尚未使用CC進行編譯。 該文件已使用esql編譯。 最后,esql調用CC。

這就是為什么我嘗試這種解決方法的原因:不要直接從make調用clang。 從Shell腳本調用clang。

$ cat ~/bin/mycc

/usr/bin/cc "$@"

$ export CC=mycc
$ make 

歡呼! gdb打開源文件!

順便說一句:用(cd sub-dir;make -w)代替make -w -C sub-dir是另一個解決方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM