最近在解bug的时候,涉及到strcmp导致的偶现段错误问题。对于strcmp,自己在linux环境下进行了个简单的测试,
测试代码如下:
代码很简单,但我代码中只写strcmp(),这一行时然后分别在linux环境和windows环境中的vs编译时,vs编译运行立马段错误,但是在linux环境下却没段错误。如果开启上图中,屏蔽的代码,在编译运行时,linux和windows环境都
段错误,对于此现象有点疑惑,后面就想到了gdb工具,于是在linux下就用gdb查看了下测试代码的汇编代码,对于
具体怎么使用gdb查看汇编代码,大家可以自己百度,通过查看汇编代码如下所示:
我们可以看到单独的未做任何操作的一句strcmp代码,是没有任何汇编代码对应的,所以对于我刚刚在linux环境下
单独测试strcmp一条简单语句未出现断错误就找到原因了,对于这未做任何事情的语句,编译器在编译时进行了优化。
问题很简单,这里记录下主要是记录解决问题的一种思路。