线程崩溃

cbzjzsb123 2017-09-18 05:11:45
程序功能:
在线程里调用了一个函数,由主线程过一段时间发送event,让这个函数执行一遍。
我现在把这个函数每执行一步都用OuputDebugString()函数打印出来。
现在的情况是,程序运行一段时间后,OuputDebugString()函数只打印了一半就不打印了。然后主界面卡死。然后单步调试的时候发现给这个线程发时间的函数还在运行。
由于这个函数是顺序执行的,所以不会出现死循环,而且每次卡死的时候,OuputDebugString()函数显示的也不一样。
所以想请问,在线程里顺序执行的函数会不会出现执行一半就不执行了,这种崩溃会不会抛出异常。会不会是内存越界或者资源不够什么的。调试的时候也没弹出什么信息。
...全文
763 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cbzjzsb123 2017-10-30
  • 打赏
  • 举报
回复
最后还是查到调用别人的API函数卡死了。
赵4老师 2017-09-19
  • 打赏
  • 举报
回复
学会在WinDbg中使用相应命令切换线程和查看Call Stack
赵4老师 2017-09-19
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
向立天 2017-09-19
  • 打赏
  • 举报
回复
你在线程里发个消息回到主线程然后再OuputDebugString试试
homesos 2017-09-19
  • 打赏
  • 举报
回复
运行了多久? OuputDebugString输出的内容,你用什么看的?如果运行的时间长、输出的内容多,我建议不要用OuputDebugString,最后必然卡死,还是输出到日志文件吧,再测试。
zgl7903 2017-09-19
  • 打赏
  • 举报
回复
任务管理器 观察 内存/线程/GID句柄数,看看是否有泄漏
sky065530 2017-09-19
  • 打赏
  • 举报
回复
是怎么同步两个线程的,看你 描述的情况是不是用信号量同步的,如果在主界面的线程中用阻塞的方式同步了的话,看看有没有其他线程王主界面线程发消息,比如某个线程为了向主界面上写内容而调用了listbox_setsel()之类的 。
oyljerry 2017-09-19
  • 打赏
  • 举报
回复
还有可能就是你发送的数据太多等,内存不够了,或者有内存泄漏。
smwhotjay 2017-09-18
  • 打赏
  • 举报
回复
调用的api是否会超时,无法响应,要搞清楚
cbzjzsb123 2017-09-18
  • 打赏
  • 举报
回复
名字应该改成函数卡死吧。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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