- 主题:内存覆盖问题都是咋定位的?
都定位到哪儿被覆盖了,那就设置一个内存断点,看看是什么时候修改了
【 在 chunhui 的大作中提到: 】
: 昨天简单试了一下 valgrind,程序不能正常启动。初始化有一行失败,不加valgrind正常。
: 这个程序是个稍微大型的长时间后台服务。总有个函数入参被覆盖,而且需要跑很久才能碰上。用watch貌似也不太行,我要试试再说
--
FROM 123.113.10.*
这个不能监控函数参数,参数在栈上地址是会变来变去的,你不是说内存被覆写了吗你如果可以定位到被覆写的地址,那就watch这个地址,这个地址的内容变化的时候就会停在修改这个地址内容的指令上, 你再去检查堆栈,看看是什么问题。
【 在 chunhui 的大作中提到: 】
: watch?这个可以监控函数参数,一直运行到出问题暂停么?要跑一两天才能遇到。
--
FROM 182.48.105.*
arg->xx属性还是方法?
【 在 chunhui 的大作中提到: 】
: 被覆盖的就是一个函数的入参。进入函数后正常,执行几行之后应用这个入参的时候挂掉。
: fun(arg)
: arg->xx ok
: ...................
--
FROM 182.48.105.*
这个fun函数是被调用很多次吗?每次调用的参数一样吗,如果只调用一次,或者每次调用都用的同一个arg,那内存地址是固定的,就可以用watch,否则不行
--
FROM 182.48.105.*