vs调试 多线程
2015-10-16 14:54
183 查看
Visual C++调试器可以支持“多线”情况。
例如,当一个线程遭遇一个断点时,调试器会自动切换到该线程的context
去。这所产生的一些行为,可能会令第一次见到的你感到惊讶。
如果你在一个“许多线程都会调用的函数”内设立断点,每当一个线程遭遇此断点,调试器便会在线程之间循环切换。我遇过这种情况数次。我设立一个断点,并且尝试执行下一步,结果却再次回到断点。我想调试器大概正在切换线程。这让我十分困惑。
有一些方法可以避开这些问题。
方法之一是挂起所有的线程——你感兴趣的那个除外。在调试器中,如果你打开【
Debug】菜单并选择【 Threads】,你
就会获得图12-1
在此对话框中你可以挂起(suspend)或重新执行(resume)任何线程,并且将调试器的焦点设定在某个线程身上。为解决前述问题,我应该选择图12-1中的两个线程,并按下【
Suspend】按钮,然后再选择第三个线程,按下【Set
Focus】按钮。
另一个调试方法:
输出日志,log。printf()等方法输出日志。
例如,当一个线程遭遇一个断点时,调试器会自动切换到该线程的context
去。这所产生的一些行为,可能会令第一次见到的你感到惊讶。
如果你在一个“许多线程都会调用的函数”内设立断点,每当一个线程遭遇此断点,调试器便会在线程之间循环切换。我遇过这种情况数次。我设立一个断点,并且尝试执行下一步,结果却再次回到断点。我想调试器大概正在切换线程。这让我十分困惑。
有一些方法可以避开这些问题。
方法之一是挂起所有的线程——你感兴趣的那个除外。在调试器中,如果你打开【
Debug】菜单并选择【 Threads】,你
就会获得图12-1
在此对话框中你可以挂起(suspend)或重新执行(resume)任何线程,并且将调试器的焦点设定在某个线程身上。为解决前述问题,我应该选择图12-1中的两个线程,并按下【
Suspend】按钮,然后再选择第三个线程,按下【Set
Focus】按钮。
另一个调试方法:
输出日志,log。printf()等方法输出日志。
相关文章推荐
- MySQL用户远程访问权限开通
- jar包想读取jar包以外的配置文件
- js 替换字符
- LAC
- 对于dequeueReuseableCellWithIdentifier的个人见解
- WebService到底是什么?
- Java设计模式---工厂方法模式(Factory-Method)
- [ios]AVCaptureSession 在横向模式在 iPad 上的问题
- 让所有浏览器包括IE6即支持最大宽度又支持最小宽度。
- Java基础知识学习(六)
- Java设计模式---工厂方法模式(Factory-Method)
- Linux学习 -- 备份与恢复
- (六)Ireport制作一个规范的报表,处理数据格式
- Android布局大全
- Andrid利用FLAG_ACTIVITY_CLEAR_TOP实现退出APP
- 【GOLANG】goroutine原理
- 拍照或者从相册选择
- transactionscope
- volatile 关键字
- HTTP请求中浏览器的缓存机制