-
[root@localhost bin]# locale
-
LANG=zh_CN.GB18030
-
LC_CTYPE="zh_CN.GB18030"
-
LC_NUMERIC="zh_CN.GB18030"
-
LC_TIME="zh_CN.GB18030"
-
LC_COLLATE="zh_CN.GB18030"
-
LC_MONETARY="zh_CN.GB18030"
-
LC_MESSAGES="zh_CN.GB18030"
-
LC_PAPER="zh_CN.GB18030"
-
LC_NAME="zh_CN.GB18030"
-
LC_ADDRESS="zh_CN.GB18030"
-
LC_TELEPHONE="zh_CN.GB18030"
-
LC_MEASUREMENT="zh_CN.GB18030"
-
LC_IDENTIFICATION="zh_CN.GB18030"
-
LC_ALL=
-
[root@cdh-dn-2 bin]# locale
-
LANG=en_US.UTF-8
-
LC_CTYPE="en_US.UTF-8"
-
LC_NUMERIC="en_US.UTF-8"
-
LC_TIME="en_US.UTF-8"
-
LC_COLLATE="en_US.UTF-8"
-
LC_MONETARY="en_US.UTF-8"
-
LC_MESSAGES="en_US.UTF-8"
-
LC_PAPER="en_US.UTF-8"
-
LC_NAME="en_US.UTF-8"
-
LC_ADDRESS="en_US.UTF-8"
-
LC_TELEPHONE="en_US.UTF-8"
-
LC_MEASUREMENT="en_US.UTF-8"
-
LC_IDENTIFICATION="en_US.UTF-8"
-
LC_ALL=
以上是两台服务器的字符集设置,一台(A)是GB18030(GB2312->GBK->GB18030依次向下兼容),一台(B)是UTF-8。
程序使用了库里的一个锁无关环形队列类,该类中的出队方法里有注释:“极端情况:队列中只有一个元素,但是出队错误”
在A服务器上,一个元素入队,gdb调试出队方法的调用出,经常卡死或者报gdb内部错误。
在B服务器上,同样的代码、数据,没有错误。
疑似服务器字符集设置引起的问题,仅在此记录备忘,未严格验证。
【后记】后来在另外一台字符集为utf-8的服务器上也出现了类似的问题!怀疑是文件的编码有问题。
http://wuhuizhong.iteye.com/blog/1424132
结合file和iconv命令转换文件的字符编码类型
用iconv -f gbk -t utf8 -o file.dst file.src,把新添加的几个文件转换了格式,就没有卡死了。
一个程序里的文件格式如果有多种,很可能会导致gdb调试的时候卡死。
上述方法不一定一有效,尝试把所有文件都dos2unix。
编码问题真让人头疼 o(︶︿︶)o 唉。
阅读(1115) | 评论(0) | 转发(0) |