[英]xcode breakpoints not resolved with included cpp files - MacOS
更新 :根據Jason Molenda給出的答案,我意識到設置命令根本不是問題 - 它正在被正確讀取並且具有正確的值,但是仍然沒有解決斷點。 我已經更改了主題名稱以更准確地適應問題。
問題摘要:我包含cpp文件,當使用gutter設置斷點時,Xcode無法解析它們,應用程序是在外部構建的(不是在Xcode中開發),而我的.lldbinit已經設置了target.inline-breakpoint-strategy always set 。
以前的版本 :我的問題是我無法讓Xcode的調試器在包含的.cpp文件中斷點(來自外部構建的應用程序,只是嘗試使用Xcode作為調試器)。
我發現答案是將以下內容添加到.lldbinit文件中:
設置始終設置target.inline-breakpoint-strategy
而我做到了。 它似乎根本沒有閱讀,也沒有改變任何東西。 使用以下命令自行運行命令:
命令源〜/ .lldbinit
它告訴我:
-bash:settings:找不到命令
我不明白為什么它無法弄清楚'settings'命令。 我將補充一點,我對該文件應該如何工作知之甚少,但我看到這個命令在許多lldbinit文件中使用沒有問題。
我搜索了有關這方面的信息,無論我如何搜索,谷歌都給了我一些與它無關的信息。
其他說明:
- 應用程序是使用調試信息構建的。
- 為了設置Xcode,我創建了一個空項目,設置了一個新方案的可執行文件來調試我構建的那個,並為代碼瀏覽添加了代碼文件夾引用。
- 我使用Xcode裝訂線添加斷點。
- 我正在使用MacOS 10.12 - Sierra,而不是Linux,以及Xcode 8.2.1。
- 如果我通過命令行運行LLDB並使用:b filename.cpp:line設置斷點,一切正常。 即使我手動運行時遇到'settings:command not found'錯誤,也是如此。 但它從未在Xcode的可視化調試器中運行。 也許我被這個錯誤誤導了?
-Breakpoints在包含其他文件的基本.cpp文件中正常工作,但不包含在任何包含的文件中。
謝謝你的幫助。
好吧,這個問題在最近幾天一直困擾着我,互聯網上幾乎沒有什么可以幫助 - 但我終於明白了! 有點意外 - 我擺弄了東西,現在它起作用了一些完全神秘的原因。
這是針對Xcode 8 - macOS Sierra - 2010年中期的計算機
問題:
在外部版本中,斷點適用於主cpp文件,但斷點不適用於任何包含的文件 - “#include”附帶的cpp文件。 lldbinit設置無助於改善這種情況。
症狀:
使用在包含的文件中創建的一些新斷點運行程序,然后按xcode調試器中的pause鍵。 在LLDB控制台(屏幕右下角)中,鍵入:斷點列表您將看到所有斷開的斷點在其末尾顯示“location = 0(pending)”。 如果您從主文件添加工作斷點,您將看到它顯示“location = 1”。
解:
在項目管理器中,單擊主項目文件,然后單擊您的目標,轉到“信息” - 因為我假設您能夠正確構建,您將在Build中獲得build.sh文件的路徑工具箱。 但請確保目錄框為空(我的參數框也是空的,但我懷疑這是相關的。)
一旦該目錄框為空,build.sh將不再起作用,因為它將無法找到您的文件。 要解決此問題,請像這樣硬編碼您的路徑:
clang++ -g -I/usr/local/include/SDL2 -lSDL2 /absolute/path/to/sdl_mygame.cpp -o /absolute/path/to/mygameexecutable
現在構建工作,神秘地,現在您的斷點全部工作!
關於我的設置的其他說明:
希望這可以幫助!
command source ~/.lldbinit
應該在lldb中運行。 你是從你的shell運行它; 該錯誤消息來自bash。 (“ settings
”對bash沒有任何意義)
當您的項目包含源文件(而不僅僅是標題)時, settings set target.inline-breakpoint-strategy always
需要settings set target.inline-breakpoint-strategy always
。 這不常見,因此它不是默認行為 - 它會降低調試器的性能,以掃描每個文件,如此處所需。 它是在https://lldb.llvm.org/troubleshooting.html頂部的文檔。 大多數人不需要這個設置。
我不確定為什么Xcode中的斷點,當你點擊源編輯器的斷點gutter時,正在工作。 這可能是一個單獨的問題。 如果您啟動項目並暫停它,則可以執行此操作
(lldb) settings show target.inline-breakpoint-strategy
在調試器控制台窗口中驗證它always
像你想要的那樣。 如果您的斷點不起作用,我將首先查看您的構建設置,並查看您的某個構建設置是否未生成調試信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.