4

在此处输入图像描述

我没有选中“显示反汇编”,但经过几步之后仍然会出现。

4

2 回答 2

1

这可能是使用 Release 配置而不是 Debug 编译的代码。在这种情况下,Xcode 更难将机器指令与源代码行关联起来。

于 2013-05-13T00:59:14.503 回答
1

“#line”宏也会对编译造成严重破坏

一些应用程序使用“预生成”(没有更好的术语)源文件集,在我的例子中是“yacc”/“bison”或“lex”/“flex”。编译器 (Xcode 6.2) 采用一组参数行(根据您的应用程序定制)并将它们插入到预先生成的源文件中,并生成一个中间源文件以输入到您的最终源代码中。

当它这样做时,它会添加将“中期”源代码行与原始源代码行相关联的行号以进行调试。

不幸的是,它搞砸了。
例如:我的源代码文件“syntax.ym”用于生成中间源文件“syntax_bison.m”。—————— 但是在中间状态文件中它放置了 2 个不同的文件名,如下所示 —— … code … typedef union

第 49 行“syntaxer.ym”</h1>

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

第 849 行“syntaxer_bison.m”</h1>

… 更多代码 … ——— 第一个片段结束 ———</p>

在进行最终编译时,这会在 Xcode 中的某些地方弄乱调试符号。

如果您只看到汇编并且在您的代码中有“#line”,请注释掉这些行,即将“#line”替换为“//#line”。您仍然可以获得与原始源代码相关的信息,并且 Xcode 不会在编译时搞砸调试信息。

使用全局查找和替换来搜索“#line”并替换为“//#line”。

我修改后的源代码如下

—————— 第二个片段的开始,带有注释的行 —— ... code ... typedef union // #line 49 “syntaxer.ym” ... some code ... ... 更多 code ... /* yacc.c 的第 193 行*/ // #line 849 “syntaxer_bison.m” ... 更多代码 ... ——— 第一个片段结束 ———</p>

编译调试器后,现在显示我的“中期”c 代码,除非我手动选择“显示反汇编”选项,否则我会看到我的 C 或 Objective C 代码没有问题。

我希望这会有所帮助

于 2015-05-05T20:17:05.760 回答