在使用跟踪,我发现,一些职能未列出的来源,而试图找到他们,以便把一个断点。这些职能似乎只出现时,我认为源于大会的格式。

我跟我的老年人,他们告诉我如果任何功能只能称为一次,这将是优化通过跟踪和将出现内联的,因此可以看出,在大会。

我的问题是:

  1. 这是如何优化情况,通过劳特巴赫?
  2. 这是有利??
有帮助吗?

解决方案

有一两件事情:

  1. 有关的声明 我发现这些职能未列出的来源,而试图找到他们,以便把一个断点",只是检查映射文件/地图文件,其中包括不同的功能被用在建造,其位置在存储器等等如果你找不到你的功能没有比只看到优化的[唯一可能的问题].

  2. 为正确指出的那样,优化不是通过劳特巴赫,但它是通过编译器。通常情况下,有不同的优化水平[在手臂我们O0-O2]其O0是最高优化可能的,但这只应用于在有释放到客户的其他优化水平O2应用于调试。

  3. 如果你觉得功能可能是优化通过编译器,试图使它 易失性.

  4. 其他一点不可能[直接]与此相关但是可能会有帮助的是知道"在其区域内存是你的文件",因为很多时候,当你想要调试的东西,该网页还在不在RAM,你不能把断点时间,页面被取在RAM[基本上,类似需求的寻呼,如果它存在于你的系统]

希望这会有所帮助。

-hjsblogger

其他提示

优化是通过编译器,而不是由劳特巴赫.编译器试图优化其组件的语文输出,默认设置通常将内联的功能,只能称为一次。

到复盖这些优化用于测试目的,可以使用该标志编译器 --no_inline.

内联的一个功能,只是称为一旦可以通过编译器。

优点是,它可以节省开销的呼叫功能(运行时,代码的空间和堆空间),和你仍然可以写的代码一个好的模块化方式多种功能。

其缺点是调试变得更加困难,因为在调试功能混在一起的呼叫者。

W.r.t.该行为的追踪工具你的问题是相当不清楚。

如果有一个功能正在叫,你不能找到你的源代码是不可能的,因为内联职能2的原因:

  1. 内联的功能的电话不会显示出来作为子程序,呼吁在大会的代码代码,以实现功能是发射的内联在功能的电话否则会(这是什么内联)

  2. 当编译器内联你调用的功能,功能名称(如果你能看到它在大会的输出)将仍然是部分的源代码-那是compiler会得到代码以内联。

但是,编纂者有时插入神秘的功能调用内部的辅助功能所产生的代码,以实现的东西喜欢的算术运算,CPU不直接支持(整除或浮点运作为例)。

什么样的名称'神秘的职能'?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top