当前位置: 技术问答>linux和unix
关于IBM AIX5 下-O 与-G的编译问题
来源: 互联网 发布时间:2015-01-05
本文导语: 大家好,今天比较忧闷, 再S85上用xlC -g 能够编译通过,并运行。但是用xlC -O编译,能通过,却一运行就core了。呵呵忧闷。不知道再-g 与-o上编译他们本质的区别在那里,你要是只知道-g是为了跟踪,-o是...
大家好,今天比较忧闷, 再S85上用xlC -g 能够编译通过,并运行。但是用xlC -O编译,能通过,却一运行就core了。呵呵忧闷。不知道再-g 与-o上编译他们本质的区别在那里,你要是只知道-g是为了跟踪,-o是优化编译,就不要跟贴了,谢谢
|
不知你看过write clean code没有,按照这本书的思路,问题可能在你的代码中,
很可能是内存访问出了问题。-o是用来优化的,一优化就可能改变代码的顺序,比如说memset越界吧,本来的变量生明顺序可以掩饰这个错误(越界的后面还有变量,保护了进程的stack),一旦顺序变了就掩饰不了了,你的机器上有调试工具
吧,掉出来看看core,能不能定位。
也可以试试吧所有的警告选项全部打开。
注意一下警告信息里有没有线索。
很可能是内存访问出了问题。-o是用来优化的,一优化就可能改变代码的顺序,比如说memset越界吧,本来的变量生明顺序可以掩饰这个错误(越界的后面还有变量,保护了进程的stack),一旦顺序变了就掩饰不了了,你的机器上有调试工具
吧,掉出来看看core,能不能定位。
也可以试试吧所有的警告选项全部打开。
注意一下警告信息里有没有线索。
|
一般来说,-o是用来优化代码的,-g是用来生成调试信息的。
这两个参数一般不同时出现。
这两个参数一般不同时出现。
|
如果需要调试程序就需要 -g 参数!