社区
C#
帖子详情
多线程调试的问题
biihc2000
2005-08-16 11:42:01
我自己手工生成了若干线程,其中有些线程老是出些异常,我就想把这些异常信息写LOG,在IDE的调试环境下似乎一切正常,但在独立运行时,有些线程的异常却没有捕捉到,程序然后就处于无响应状态,请问这是为何?
另外,请大家推荐一些多线程调试方面的书籍,有电子版下载的最好了,多谢.
...全文
136
11
打赏
收藏
多线程调试的问题
我自己手工生成了若干线程,其中有些线程老是出些异常,我就想把这些异常信息写LOG,在IDE的调试环境下似乎一切正常,但在独立运行时,有些线程的异常却没有捕捉到,程序然后就处于无响应状态,请问这是为何? 另外,请大家推荐一些多线程调试方面的书籍,有电子版下载的最好了,多谢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ChenLiuqing
2005-08-19
打赏
举报
回复
mark
biihc2000
2005-08-19
打赏
举报
回复
我知道遇到控件的线程安全问题,需要使用控件的Invoke方法和是beginInvoke/endInvoke,但是为什么需要这样,并且使用Invoke时,调试相当麻烦,总是不好准确定位错误.请熟悉这方面内容的高手多多指教.
lw8122
2005-08-19
打赏
举报
回复
写日志,我是用自己的函数写的文件,所有错误都能写下来。
不知道你是怎么写的????
biihc2000
2005-08-19
打赏
举报
回复
我昨天以调了半天,发现当出现窗体控件的线程安全性问题时(就是那种报"你不是在创建该控件的线程上操纵该控件"的那种错误),异常就捕捉不到,其它的都还是正常的.不知是什么原因.对窗体控件的线程安全的问题,我老是搞不太明白,不知道是什么原因产生了如此限制(非要在创建控件的那个线程上使用控件)?我应该如何避免遇到此种问题.
wzhnet
2005-08-18
打赏
举报
回复
写日志的地方 估计有问题
biihc2000
2005-08-18
打赏
举报
回复
我在代码中也是如各位所说,加了许多try/catch,然后在catch中记日志,但是只在调试状态下可以捕捉到异常,然后日记也记下了,但在独立运行时却无法捕捉,日志里也没有相应记录,不知是怎么回事.
henryfan1
2005-08-16
打赏
举报
回复
线程的异常好象是不会抛出来的,你必须在线程代码里try在catch中写文件.
iasky
2005-08-16
打赏
举报
回复
mark啊
lw8122
2005-08-16
打赏
举报
回复
这是我进程函数的标准模式:
private void threadFunctionA()
{
try
{
try //估计打开文件可能产生异常
{
... //打开一个文件
}
catch(Exception fileError)
{
writeLog("openfile error in threadFunctionA():"+fileError.message);
}
...... //估计不会产生异常的代码
}
catch(Exception e){
writeLog("unknow error in threadFunctionA():"+e.message);
}
}
这样,通常在程序发生错误时,都会在日志中,找到错误的大概原因。
不过,日志代码太多,很繁琐。 但是,在调试期,一旦出错,就会发些这些代码还是值得的
lw8122
2005-08-16
打赏
举报
回复
线程中,每个函数的代码都包含在try/catch中,全程写日志,且尽量详细一点,至少把函数名写进去。
我的多线程代码,日志代码占到了总代码量的30%,虽然这些代码执行得很少,但是,一旦发现问题,你就可以佷快的从日志中看出大概是哪些代码出问题了,调试起来就很方便。
btw:多线程中,很多不稳定问题是出现在几个线程同时抢一个资源的时候。 这种问题,除了通过日志判断,别无他法。 因为在IDE中调试,跟本不会出这种问题。
linuxyf
2005-08-16
打赏
举报
回复
要确认异常是否捕获没有,再就是你这个线程内得运算是否有陷入死循环得可能,你可以用log4net做日志来分析一下了。
VS
多线程
调试
1.VS
多线程
调试
问题
描述 先看一下这个例子: 这里我的代码里有2个线程,一个线程在发送数据,另外一个线程在接收数据,上图中加断点的地方是发送线程的代码,接收线程中我有一个while循环在不断地打印日志。...
Python
多线程
调试
有时候程序是
多线程
的,
调试
的时候可能跑到别的线程了。 这个时候把thread.start变成threa.run就好了,就会执行完当前线程再执行下一个。 如下代码: for thread in threads: thread.run()#原本是thread.start() &...
VS中的
多线程
(/MT)、
多线程
调试
(/MTd)、
多线程
DLL(/MD)、
多线程
调试
DLL(/MDd)的区别
一种语言的开发环境往往会附带有语言库,这些库就是对操作系统的API的包装,我们也称这些语言库为运行库 对于MSVC的运行库(CRT),...在
调试
模式下,使用
调试
运行库:
多线程
调试
(/MTd)、
多线程
调试
DLL(/MDd) ...
GDB
多线程
调试
(
调试
命令+
调试
演示)
多线程
调试
(一)
多线程
调试
命令 shell的命令: (1)查看当前运行的进程:ps aux | grep book (2)查看当前运行的轻量级进程:ps -aL | grep book (3)查看主线程和子线程的关系:pstree -p 主线程id gdb的命令...
VS的
多线程
调试
问题
今天进度太慢了,本来就不是非常有时间的,结果都花在了整系统结构的上面。...然后,为了测试线程安全地时候,
问题
发生了。我一旦将断点设置到工作线程中,vs立马假死,导致系统瘫痪。我尝试了4-5次,基本上全部
C#
110,567
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章