Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1320679
  • 博文数量: 179
  • 博客积分: 4141
  • 博客等级: 中将
  • 技术积分: 2083
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-21 20:04
文章存档

2024年(1)

2019年(13)

2016年(1)

2014年(16)

2011年(8)

2010年(25)

2009年(115)

分类:

2009-03-23 21:28:48

调试优化过的代码

l  优化的重要性

优化代码不仅能够节省程序运行的时间,而且能够减少程序运行的内存空间。

优化可能使得某些代码被移动或者删除,变量分配的改变(比如说有些变量被分配给了寄存器),程序控制流发生了改变,未使用的变量被删除。

l  调试优化的困难

当优化过程中改变了代码,调试器如果没有和编译器进行良好的沟通的话,调试过程就可能出现错误,比如说设置断点,原本调试器可能是要在某一个分支设置断点,可能优化的过程中,该分支被删除了,则设置的断点可能就出现了错误,又比如说如果调试器给出了某一个变量的信息,可能优化的时候该变量的地址发生了改变,则给出的信息就是不可靠的了。

l  在调试过程中优化的原因

如果应用程序的性能越好,则调试进程也会执行得越快。不过开发人员在开发阶段,都是关闭优化开关的,只有在发布产品的时候,才会打开优化开关。

l  编译器优化概览

以下稍微列举了编译器优化的手段:

1.      代码提升;

2.      代码移动;

3.      常量折叠;

4.      副本传播;

5.      清除不再使用的内存空间;

6.      清除不再使用的代码;

7.      消除公用的子表达式;

8.      寄存器分配;

9.      内联函数扩展;

10.  将尽可能多的代码移出循环体;

11.  交互式跳转

l  为调试器创建优化的问题

当代码位置改变或者执行过程改变的时候,很难报告出错的正确位置。一般会出现以下几种问题:

1.      变量不可知;

2.      报告不正确的变量值;

3.      不对应的目标代码;

4.      一对多或者多对一映射问题;

阅读(2202) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~