[英]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
…一些代碼……更多代碼... / * yacc.c的第193行* /
……更多代碼……—第一段代碼的結尾———
在進行最終編譯時,這會在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.