⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_65371.htm

📁 vc
💻 HTM
字号:
<p>
序号:65371 发表者:badboy 发表日期:2003-12-17 12:40:01
<br>主题:纯用API编的程序win32程序,好象不能跟踪程序的执行顺序?
<br>内容:下面这个程序我单步跟踪F11时,如果不设置断点的话,为什么跟踪不能进入到主线程产生的两个线程函数中去?&nbsp;&nbsp; 如果我在那两个线程中设置断点,才能跟踪进去。&nbsp;&nbsp;怎么搞的?<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:红苹果 回复日期:2003-12-17 23:44:05
<br>内容:每个线程有自己独立的执行路线,当然不能用单步跟踪直接进入到另一个线程函数中去啦。这就像每一个进程有自己独立的地址空间,不能从一个进程直接访问另一个进程的内存单元一样。而断点就不一样喽,不管断点在哪,只要执行到断点语句就停了,管它是谁的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-21 20:10:03
<br>内容:那,如果产生了三个线程。我想跟踪一下整个的执行顺序,怎么办?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-12-22 23:54:58
<br>内容:method 1, using SoftIce debugging multithreaded process<BR>method 2, suspend the other threads when you wanna focusing only one thread
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-27 09:11:53
<br>内容:大力水手:<BR>&nbsp;&nbsp; 1、 这个SoftIce&nbsp;&nbsp;是别的非VC调试软件吧? <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 您第二个方法说是当想调试一个线程时,挂起其他线程。 <BR> 我感觉在VC里对多线程的调试正好相反,我们可以在两个线程里设置断点,只有这样才能进得去线程内部。但,当我F10单步执行时候,好象跟踪根本不会再进到另外别的线程里去了。其实,开始为什么说我需要在两个线程中设置断点,就是因为当调试程序时,控制就只跟踪主线程了,也没有机会进入到分线程。<BR>&nbsp;&nbsp; 后来我一想,也对。因为多线程的执行是不可预期的,我想全程跟踪每个线程控制的执行顺序是不可能的。<BR><BR>&nbsp;&nbsp; 下面给个示例!帮我调试!<BR><BR>#include &lt;stdlib.h&gt;<BR>#include &lt;stdio.h&gt;<BR>#include &lt;time.h&gt;<BR>#include &#34;iostream.h&#34;<BR>#include &#34;windows.h&#34;<BR>#include &#34;conio.H&#34;<BR>HANDLE hthrd;<BR>DWORD threadid;<BR>int i=0;<BR>DWORD WINAPI thread1(LPVOID n)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int j=0;j&lt;500000;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;i&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR>DWORD WINAPI thread2(LPVOID n)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int j=0;j&lt;500000;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=i+10;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;&#34;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#34;&lt;&lt;i&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>}<BR>void main( void )<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;hthrd=CreateThread(NULL,0,thread1,(LPVOID)3,0,&amp;threadid);<BR>&nbsp;&nbsp;&nbsp;&nbsp;hthrd=CreateThread(NULL,0,thread2,(LPVOID)3,0,&amp;threadid);<BR>&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hthrd);<BR>&nbsp;&nbsp;&nbsp;&nbsp;getch();<BR>}&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凯凯 回复日期:2003-12-27 18:00:29
<br>内容:在线程中写个日志。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-27 20:31:13
<br>内容:您写的也太简单了,写日志能解决问题吗? 不懂!<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;我是C++的红卫兵!!!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凯凯 回复日期:2003-12-27 21:30:45
<br>内容:多线程程序是无法单步调试的(单步调试只能解决单个线程的逻辑正确)。我都是用写日志的方式,在线程的关键点上,将自身的执行状态等信息写到日志文件中,再通过看日志来了解运行时的状态。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-12-28 09:35:58
<br>内容:&nbsp;&nbsp;您的方式真独特! 是您自创的?<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 还有一点不明白的是您说的日志文件是自己创建的吗?比如自己创建一个文本文件,我们可以把每个线程关键步骤的执行的循序写到文本文件里。留给以后慢慢的观察。<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:凯凯 回复日期:2003-12-28 11:08:44
<br>内容:不是自创的,是一种标准的方式。<BR><BR>当然是自己创建日志文件再写。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -