strcmp段错误引发的思考
2017-01-21 23:15
260 查看
最近在解bug的时候,涉及到strcmp导致的偶现段错误问题。对于strcmp,自己在linux环境下进行了个简单的测试,
测试代码如下:
![](http://img.blog.csdn.net/20170121230507605?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSDUxNDQzNDQ4NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
代码很简单,但我代码中只写strcmp(),这一行时然后分别在linux环境和windows环境中的vs编译时,vs编译运行立马段错误,但是在linux环境下却没段错误。如果开启上图中,屏蔽的代码,在编译运行时,linux和windows环境都
段错误,对于此现象有点疑惑,后面就想到了gdb工具,于是在linux下就用gdb查看了下测试代码的汇编代码,对于
具体怎么使用gdb查看汇编代码,大家可以自己百度,通过查看汇编代码如下所示:
![](http://img.blog.csdn.net/20170121231105275?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSDUxNDQzNDQ4NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我们可以看到单独的未做任何操作的一句strcmp代码,是没有任何汇编代码对应的,所以对于我刚刚在linux环境下
单独测试strcmp一条简单语句未出现断错误就找到原因了,对于这未做任何事情的语句,编译器在编译时进行了优化。
问题很简单,这里记录下主要是记录解决问题的一种思路。
测试代码如下:
代码很简单,但我代码中只写strcmp(),这一行时然后分别在linux环境和windows环境中的vs编译时,vs编译运行立马段错误,但是在linux环境下却没段错误。如果开启上图中,屏蔽的代码,在编译运行时,linux和windows环境都
段错误,对于此现象有点疑惑,后面就想到了gdb工具,于是在linux下就用gdb查看了下测试代码的汇编代码,对于
具体怎么使用gdb查看汇编代码,大家可以自己百度,通过查看汇编代码如下所示:
我们可以看到单独的未做任何操作的一句strcmp代码,是没有任何汇编代码对应的,所以对于我刚刚在linux环境下
单独测试strcmp一条简单语句未出现断错误就找到原因了,对于这未做任何事情的语句,编译器在编译时进行了优化。
问题很简单,这里记录下主要是记录解决问题的一种思路。
相关文章推荐
- 一道有意思的笔试题引发的对于new操作符的思考
- Java包命名规则引发的思考
- 线上问题引发的思考---从一个死锁看mysql innodb的锁机制
- 苹果在线服务发生故障引发的思考
- 由一段JS代码引发的思考
- 开车误闯红灯的补救方法 (以及由此引发的一些思考)
- 一个分号引发的思考
- 腾讯高级工程师:一道面试题引发的高并发性能调试思考
- 由跳槽引发的职业规划思考——致迷茫行进中的程序员
- 由CSS列表引发对CSS生成内容的思考
- C# 由范式编程==运算符引发对string内存分配的思考
- 由OUI-10035和OUI-10033错误引发的关于oraInventory目录位置的思考
- C语言--一个实参与形参赋值引发的思考
- java complier compliance level问题引发的思考
- 各种关于ViewGroup中touch事件传递引发的思考
- 由移动端级联选择器所引发的对于数据结构的思考
- 关于中国产品的质量问题-一个暖水袋引发的思考
- 一个事故引发的思考
- PHP中如何保持SESSION以及由此引发的一些思考