多线程调试问题(观察一段代码运行中的线程切换)
我有一段代码执行时间应在1ms以内,现有时候会有100ms左右的情况。我想观察在这段代码运行期间,都切换到了哪几个线程,应该怎样做?
谢谢!
问题点数:0、回复次数:9Top
1 楼xtjqu(LPVOID)回复于 2005-06-02 01:15:55 得分 0
关注,这个问题太典型了,顶Top
2 楼tramper2000(tramper)回复于 2005-06-02 14:24:31 得分 0
高手请支招!
Top
3 楼betsyalan(alan)回复于 2005-06-02 16:18:13 得分 0
线程间的上下文切换是很占资源的,如果想查看切换了哪些线程,可以有很多办法,例如你采用调试的方式,在线程内断点;或者使用TRACE宏在线程中输出有线程特征的变量;或者采用写日志的方式来记录哪些线程调用了。Top
4 楼younggle(洋溢)回复于 2005-06-02 16:30:18 得分 0
线程间的上下文切换是很占资源的,如果想查看切换了哪些线程,可以有很多办法,例如你采用调试的方式,在线程内断点;或者使用TRACE宏在线程中输出有线程特征的变量;或者采用写日志的方式来记录哪些线程调用了。
===========================================================================
一般是这样了:调试,输出调试信息,写日记。Top
5 楼orbit(走了走了)回复于 2005-06-02 16:45:21 得分 0
线程切换是操作系统的事情,线程自己是不知道的,通过TRACE线程特征(比如线程ID)只能知道代码在那个线程执行,至于是否这个线程被切换了或切换了多少次是无法得知的Top
6 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-06-02 17:38:01 得分 0
可以考虑TRACE/OutputDebugString,但这有何意义?这是操作系统的事,你又干预不了。Top
7 楼tramper2000(tramper)回复于 2005-06-02 18:54:10 得分 0
各位:
因为我不知到切换到哪去了,可能都不是这个进程了,是没法用日志或Trace的
这是很大一问题◎Top
8 楼danscort2000(danscort.yu)回复于 2005-06-03 09:50:09 得分 0
这好象很难吧,
一般只有用TRACE+断点来跟踪,
因为线程切换是OS的问题,不同OS在不同软硬环境下切换算法是不一致的,
你在这台机器上看到的,并不见得在另外一台上也这样运行。
没有什么意义的,
真想看,
那么用同步,加CONSEL输出,用INTERLOCKED系列函数,
对变量进行实时输出检查。Top
9 楼tramper2000(tramper)回复于 2005-06-03 18:50:09 得分 0
有俩思路:
1.用DebugEvent,好像没有线程切换的EVENT
2.用PViewer的实现思路
大家再想想~~~~Top




