簡體   English   中英

在調試並逐步執行時,如何停止Xcode向我顯示此匯編語言?

[英]How do I stop Xcode from showing me this assembly language when I'm debugging and step over?

在此處輸入圖片說明

我沒有選中“顯示反匯編”,但是經過幾步操作,仍然顯示出來。

這可能是使用Release配置而不是Debug編譯的代碼。 在這種情況下,Xcode很難將機器指令與源代碼行相關聯。

“ #line”宏也嚴重破壞了編譯

一些應用程序使用“預生成的”(缺少更好的術語)源文件集,在我的情況下為“ yacc” /“ bison”或“ lex” /“ flex”。 編譯器(Xcode 6.2)接受一組參數行(根據您的應用程序定制),並將其插入到預先生成的源文件中,並生成一個中間階段的源文件以饋入最終的源代碼。

執行此操作時,它將添加行號,這些行號將“中間階段”源代碼行與原始源代碼行相關聯以進行調試。

不幸的是,它把它擰緊了。
例如:我的源代碼文件“ syntax.ym”用於生成中間階段的源文件“ syntax_bison.m”。 ——————但是在中間狀態文件中,它放置了兩個不同的文件名,如下所示-……代碼…typedef union

第49行“ syntaxer.ym”

…一些代碼……更多代碼... / * yacc.c的第193行* /

第849行“ syntaxer_bison.m”

……更多代碼……—第一段代碼的結尾———

在進行最終編譯時,這會在Xcode中的某些地方調試調試符號。

如果您僅在查看匯編代碼並且代碼中包含“ #line”,請注釋掉這些行,即用“ //#line”替換“ #line”。 您仍然可以獲得與原始源代碼相關的信息,並且Xcode在編譯時不會破壞調試信息。

使用全局查找和替換來搜索“ #line”並替換為“ //#line”。

修改后的源代碼如下

——————第二個代碼段的開頭,帶有注釋行-…代碼…typedef union //#第49行“ syntaxer.ym”…一些代碼……更多代碼... / * yacc.c的第193行* / // #line 849“ syntaxer_bison.m”…甚至還有更多代碼... ———第一個代碼段的結尾———

編譯后,調試器現在顯示我的“中間階段” c代碼,除非手動選擇“顯示反匯編”選項,否則我看到的C或Objective C代碼都沒有問題。

希望對您有所幫助

暫無
暫無

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

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