如何查看gcc -g 与 -O的差别
前段时间遇到个奇怪的问题,在编译SO库时,使用-g编译,调用一点问题没有,但是一旦使用-O编译,程序就会CORE。
我知道有个-i的选项,是否使用gcc -g -i....与gcc -O3 -i...得到优化后的代码进行再进行比对?我看过优化后的代码,说实话,不太容易懂。
有没有更好的办法能知道优化后的代码有什么区别?或者帮忙提供下优化后代码的阅读方法,或者还需要哪些知识储备才能读明白优化后的代码。。。
望各位朋友解答。谢过!
GCC版本记不清了。。。
(另:其实我最希望的是编译器的BUG。。哈哈。。那就跟我没什么关系了。。)
[解决办法]
gcc -v 输出gcc版本
这种问题,一般是 代码问题。
几乎没疑问的
[解决办法]
-O1 -O2 -O3 -Os都有问题否?
难道你不可以-g -O3编译下自行调试么
这个问题等同于windows下的debug正常,release有问题
[解决办法]
很坚定的相信,楼上的就是对的。。
[解决办法]
也有可能是多线程程序由于优化导致逻辑改变,这种问题还是很难查的
[解决办法]
出core先bt看一下core在哪啊,有core不看算神马。