20161106

来源:互联网 发布:淘宝助手宝贝模板 编辑:程序博客网 时间:2024/06/15 05:36
当你用 GCC 编译 C 代码时, 它会试着用最少的时间完成编译并且使编译后的代码易于调 
试. 易于调试意味着编译后的代码与源代码有同样的执行次序, 编译后的代码没有经过优 
化. 有很多选项可用于告诉 GCC 在耗费更多编译时间和牺牲易调试性的基础上产生更小 
更快的可执行文件. 这些选项中最典型的是-O 和 -O2 选项. 

-O 选项告诉 GCC 对源代码进行基本优化. 这些优化在大多数情况下都会使程序执行的更 
快. -O2 选项告诉 GCC 产生尽可能小和尽可能快的代码. -O2 选项将使编译的速度比使 
用 -O 时慢. 但通常产生的代码执行速度会更快. 

除了 -O 和 -O2 优化选项外, 还有一些低级选项用于产生更快的代码. 这些选项非常的 
特殊, 而且最好只有当你完全理解这些选项将会对编译后的代码产生什么样的效果时再去 
使用. 这些选项的详细描述, 请参考 GCC 的指南页, 在命令行上键入 man gcc . 

调试和剖析选项 
GCC 支持数种调试和剖析选项. 在这些选项里你会最常用到的是 -g 和 -pg 选项. 
-g 选项告诉 GCC 产生能被 GNU 调试器使用的调试信息以便调试你的程序. GCC 提供了 
一个很多其他 C 编译器里没有的特性, 在 GCC 里你能使 -g 和 -O (产生优化代码)联用 
.. 这一点非常有用因为你能在与最终产品尽可能相近的情况下调试你的代码. 在你同时使 
用这两个选项时你必须清楚你所写的某些代码已经在优化时被 GCC 作了改动. 关于调试 
C 程序的更多信息请看下一节"用 gdb 调试 C 程序" . 
-pg 选项告诉 GCC 在你的程序里加入额外的代码, 执行时, 产生 gprof 用的剖析信息以 
显示你的程序的耗时情况. 关于 gprof 的更多信息请参考 "gprof" 一节. 

用 gdb 调试 GCC 程序 
Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力 
调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所 
提供的一些功能: 

它使你能监视你程序中变量的值. 
它使你能设置断点以使程序在指定的代码行上停止执行. 
它使你能一行行的执行你的代码. 
0 0
原创粉丝点击