请教高手!调试没问题,可执行文件直接运行一会就出错!

wliaoc 2012-05-16 08:48:01
调试运行一个月都没出问题,但是直接把可执行文件弄出来运行,过一段时间就出现提示内存读取错误,不能调试检查,没法锁定问题在哪里,请教高手,给点思路也行!
用运行日志跟踪过,但是出错的地方不是固定的。这里贴几个出错提示框。
该程序有用SQL数据库,还有用到串口通信,用线程处理写文件操作,一般出错的时候都是串口收到数据时。



...全文
400 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
穿花裤衩的人 2013-11-14
  • 打赏
  • 举报
回复
楼主,这个错误最后是怎么解决的...?
wliaoc 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]
这个问题很容易 如果是多线程 那么就是线程同步问题 调试模式下 内存访问是被保护的 而且代码执行是需要加入调试吗的 而直接编译话 很多情况下 线程是争夺的 也就是说 莫个数据在前面的线程还没有处理完毕就被后面的线程给修改或者清空删除了, 也就导致了错误的产生
[/Quote]

用postmessage或者sendmessage这样的消息处理没有类似问题吧?
wliaoc 2012-05-24
  • 打赏
  • 举报
回复
我用WINDBG调试遇到程序调用配置文件不能打开的问题,能帮忙看下能否解决吗?网址如下:
http://topic.csdn.net/u/20120523/17/5515d688-df0b-4d8a-be99-c8375d254afc.html
问题解决了一起给分
wliaoc 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

这个问题很容易 如果是多线程 那么就是线程同步问题 调试模式下 内存访问是被保护的 而且代码执行是需要加入调试吗的 而直接编译话 很多情况下 线程是争夺的 也就是说 莫个数据在前面的线程还没有处理完毕就被后面的线程给修改或者清空删除了, 也就导致了错误的产生
[/Quote]

如果是这种原因的话,怎么解决呢?还有在调试模式下怎么能找出可能产生该问题的代码呢?
ldk13702338343 2012-05-18
  • 打赏
  • 举报
回复
内存问题吗,是不是内存泄露,指针数组越界...
safeqq2 2012-05-18
  • 打赏
  • 举报
回复
这个问题很容易 如果是多线程 那么就是线程同步问题 调试模式下 内存访问是被保护的 而且代码执行是需要加入调试吗的 而直接编译话 很多情况下 线程是争夺的 也就是说 莫个数据在前面的线程还没有处理完毕就被后面的线程给修改或者清空删除了, 也就导致了错误的产生
dahaiI0 2012-05-16
  • 打赏
  • 举报
回复
百度下,应该有能下的,实在没有我记得优酷视频里有这个。
zgl7903 2012-05-16
  • 打赏
  • 举报
回复
Release版本的一样可以调试啊,和Debug版本的差不多,打开所有的异常,F5调试
wliaoc 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

图裂了,偶觉得可以尝试下用dump文件。。用法谷歌下就有,另外VC版有高人共享了视频,深入理解计算机系统系列之用户模式的程序排错(上,下),楼主有空可看下
http://topic.csdn.net/u/20100530/21/7a4a0ea3-10dc-4adc-bd9c-775c726a99e0.html?51254
[/Quote]
TO dahaiI0:
用户模式的程序排错(上)不能下载,能另外给个链接吗?
清风似水流 2012-05-16
  • 打赏
  • 举报
回复
打开任务管理器,在进程里面找到你的程序,右击,然后选择调试,这样就可以跟你的代码了,你试一试看看
wliaoc 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

图裂了,偶觉得可以尝试下用dump文件。。用法谷歌下就有,另外VC版有高人共享了视频,深入理解计算机系统系列之用户模式的程序排错(上,下),楼主有空可看下
http://topic.csdn.net/u/20100530/21/7a4a0ea3-10dc-4adc-bd9c-775c726a99e0.html?51254
[/Quote]
我去找找看
wliaoc 2012-05-16
  • 打赏
  • 举报
回复
哎,怎么贴图不能显示呢?
我说明下吧,错误提示类似“某某地址”指令引用的“某某地址”内存。该内存不能为“read”。
wliaoc 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

目标机上安装个VS的远程调试器,远程调试
[/Quote]

远程调试?怎么做?
我的程序直接在本机上跑,VS调试运行状态下不出错。直接运行可执行文件过一段时间就出错了
三条猫 2012-05-16
  • 打赏
  • 举报
回复
把所有的变量都初始化,特别是缓冲区,线程控制那块,同步,加锁.
如果无法判断从哪下手,建议使用排除法,把其他的功能都屏蔽,只留下串口通讯模块,如果再崩溃,集中精力搞
wliaoc 2012-05-16
  • 打赏
  • 举报
回复
出错图上面看不到了,这里我再贴下



wliaoc 2012-05-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

debug跑,不设断点,看最后到哪儿
[/Quote]
调试下跑就是不出错啊
zgl7903 2012-05-16
  • 打赏
  • 举报
回复
程序内捕捉异常
zgl7903 2012-05-16
  • 打赏
  • 举报
回复
目标机上安装个VS的远程调试器,远程调试
lgstudyvc 2012-05-16
  • 打赏
  • 举报
回复
debug跑,不设断点,看最后到哪儿
dahaiI0 2012-05-16
  • 打赏
  • 举报
回复
出错的地方不是固定的,有可能是堆或栈被破坏,这种情况下的调用堆栈往往不会直接定位到真正出错的地方,楼主可以尝试用windbg来定位。这个也可以配合dump一起使用
加载更多回复(3)

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧