首页新闻找找看学习计划

c#winform多线程怎么debug?

0
[已解决问题] 解决于 2017-08-26 09:20

log4net还不会用,网上那么多介绍log4net的,可都没有我想要的。因为以前都是单步debug,所以想知道:log4net 可以像单步debug那样吗?

addsds的主页 addsds | 菜鸟二级 | 园豆:226
提问于:2017-07-24 09:12
< >
分享
最佳答案
0

多线程中debug的东西涉及到两块

1.线程之间的竞争,这个我感觉只能通过日志(有些时候有日志和没日志也会导致不同结果)和写demo来确认。死锁的话可以用windbg来找。

2.除去上面的情况,在确认线程间没问题或干扰的情况下,可以在线程执行的某个点打个断点,等执行暂停后切换到你期望的线程中(vs的线程窗口中),把其他线程都冻结(同时确保不会再有额外线程生成,比如timer等),然后就可以开心的单步调试了。

奖励园豆:5
Daniel Cai | 专家六级 |园豆:10374 | 2017-07-24 11:14
其他回答(5)
0

mark,同问,我原来多线程debug很卡,而且经常线程跳来跳去

猝不及防 | 园豆:1209 (小虾三级) | 2017-07-24 09:13
0

单步调试是单步调试。

Log4net是日志记录。

 

Python八荣八耻听说过么?传说中的Python程序员是从来不单步的。

 

以动手实践为荣,以只看不练为耻。
以打印日志为荣,以单步跟踪为耻。
以空白分隔为荣,以制表分隔为耻。
以单元测试为荣,以手工测试为耻。

以代码重用为荣,以复制粘贴为耻。
以多态应用为荣,以分支判断为耻。
以Pythonic为荣,以冗余拖沓为耻。
以总结思考为荣,以不求甚解为耻。

 

日志记录是单步调试不可替代的,软件到了生产环境出问题,你如何单步?

爱编程的大叔 | 园豆:29818 (高人七级) | 2017-07-24 09:36

可以推荐怎么log4net的文章么?

支持(0) 反对(0) addsds | 园豆:226 (菜鸟二级) | 2017-07-24 10:15

@addsds: 自行Google。

BTW,我个人更喜欢NLog。

 

说多几句:

1、使用LOG4NET本身是很简单的,不简单的是如何正确使用。

2、多线程调试可以使用单线程完成初步调试,多线程环境下如何正确写代码,更重要的是理解和多读书,知道哪些资源容易产生并发冲突。多线程问题更需要思考,而不是debug。

支持(0) 反对(0) 爱编程的大叔 | 园豆:29818 (高人七级) | 2017-07-24 10:41
0

编码期:

1.把异步改为同步,先测试OK同步过程,再改为异步。

2.直接断点到目标观察点。

3.状态标记等

花飘水流兮 | 园豆:10340 (专家六级) | 2017-07-24 10:04


多线程无法断点单步debug

支持(0) 反对(0) addsds | 园豆:226 (菜鸟二级) | 2017-07-24 10:12

@addsds: 怎么可能嘛,既然都异常了,堆栈信息就你不日志,看vs下面的窗口都会显示,堆栈信息有了难道还不能定位。

支持(0) 反对(0) 花飘水流兮 | 园豆:10340 (专家六级) | 2017-07-24 10:54
0

尽量拆分成单步来debug..

站在那看风景 | 园豆:369 (菜鸟二级) | 2017-07-24 13:25
0

哪里有问题就在哪里下断点调试,不管是单线程还是多线程,都应该是哪里有问题去哪里断点调试吧

jqw2009 | 园豆:1893 (小虾三级) | 2017-08-14 15:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册