线程调试,关于《FreeImage使用中的小插曲》!

2 篇文章 0 订阅
1 篇文章 0 订阅

   请先阅读《FreeImage使用中的小插曲》,以便于理解事情的来龙去脉,谢谢!

  终于搞清楚了,不是FreeImage的问题,而是我自己的问题。这个问题不在后台线程,而在主线程。
  我在运行后台线程往数据库中写入大量的图片数据的时候,在主线程启动了一个进度对话框,里面有一个500毫秒的定时器,用来计算后台线程的进度。
  对话框显示的时候,定时器和线程先后启动,当第一个定时触发的时候,加上线程初始化的时间,后台线程刚好执行到FreeImage_Load。因为FreeImage_Load的执行时间因图片大小而定,一般需要百毫秒级。
  所以,当定时器里面的函数异常的时候,我正在单步执行的状态下调试后台线程,所以我就以为是FreeImage_Load函数的问题。
  恰好因为FreeImage_Load的加载时间稍微长了点,所以我每次跟踪到这里,都会出现异常。如果FreeImage_Load的执行很快,那么异常的地方会每次都不一样,我就会考虑到是主线程的问题。
  我找到了定时器函数里的异常代码,原来是一个野指针被使用,导致访问异常。纠正后,程序正常。小小的问题困扰了我三天的时间,希望大家不要再犯我这样的错误。线程的调试本来就很不容易,那么在写代码后一定要认真的检查,不要着急运行,否则真的会事倍功半!

  谢谢阅读本文,祝您编程愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值