|
发表于 2008-11-13 00:03:06
|
显示全部楼层
Post by gongdalaoshu;1900188
我做个一个多线性的程序,在线程处理函数中再调用一个函数。
就在这个函数中,一个int pos初始化为0,其后被另外赋值。
然后在一char数组写完结束符'\0'后,pos被莫名修改回0。
起初,以为是被另一个线程的数据被覆盖掉了。
后来就起一个子线程,还是被修改。
不起线程,直接调用,还是被修改。
现在想问怎么回事?gdb用的不是很熟练。请问有什么方法能查看pos到底是怎么被修改掉的?
很简单,你的程序中pos肯定是静态变量,只要找到有可能访问它附近变量的程序就可以。
不过我要说明的一点是,你在编多线程程序的时候,使用静态变量而且不加保护,这是一个不好的习惯,在大型程序中问题就难找了 |
|