簡體   English   中英

xcode斷點未使用包含的cpp文件解析 - MacOS

[英]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

現在構建工作,神秘地,現在您的斷點全部工作!

關於我的設置的其他說明:

  • 我創建了這個項目作為外部構建
  • 我創建了一個指向我的構建文件的目標,並取消選中“在環境中傳遞構建設置”
  • 我在Build下的Scheme中選擇了這個目標。
  • 我在運行的程序中選擇了可執行文件並檢查了Debug Executable
  • 大多數其他xcode設置似乎沒有必要。
  • 我跟隨手工制作的英雄

希望這可以幫助!

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.

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