返回

C++爬虫如何进行多线程调试

发布时间:2022-12-17 21:45:34 287
# 爬虫# 数据# 软件# 软件

我们知道在爬虫钱进行多线程调试是非常重要的,之前我们也有讨论过程序调试,今天我们还将继续在这里深入的讲解下软件调试的一些内容。比如说常见的条件断点,数据断点,多线程断点等等。

#include   
int value = 0;

void test()
{
int total;
int index;

total = 0;
for(index = 0; index < 100; index ++)
total += index * index;

value = total;
return ;
}

int main()
{
test();
return 1;
}

一、数据断点

所谓数据断点,就是全局变量或者函数中的数计算的过程中,如果数据值本身发生了改变,就会触发断点。这里的数据有两种,一个是全局数据,一个函数内部的数据。

以全局数据value为例:

a、按F10,运行程序,获取value的地址;

b、Alt+F9,选择【DATA】->【Advanced】;

c、在【Expression】中输入DW(0x0043178),【ok】回车;

d、F5继续运行程序,则程序会在value发生改变的时候停住。

以局部数据total为例:

a、按F10,运行程序,获取value的地址;

b、Alt+F9,选择【DATA】->【Advanced】;

c、在【Expression】中输入total,在【Function】输入test,【ok】回车;

d、F5继续运行程序,则程序同样会在total发生改变的时候停住。

二、条件断点

条件断点和数据断点差不多。只不过,数据断点在数据发生改变的时候就会断住,而条件断点只有在满足一定的条件下才会有断住。比如说,我们可以让test子程序在index==5的时候断住。

a、按F10,运行程序,获取value的地址;

b、Alt+F9,选择【DATA】->【Advanced】;

c、在【Expression】中输入index==5,在【Function】输入test,【ok】回车;

d、F5继续运行程序,则程序同样会在index==5的时候停住。

三、多线程调试

在VC上面对多程序的调试比较简单。如果想要对程序进行调试的话,首先F10,开始运行程序。其次,我们需要等线程创建之后才能设置断点,不然我们看到的程序只有main函数一个thread。

a、单击【Debug】,选择【threads】,那么我们就可以开始多线程调试了;

b、如果需要对某一个thread挂起,单击对应的thread,选择【suspend】即可;

c、如果需要对某一个thread重新调度,单击对应的thread,选择【resume】即可;

d、如果需要查看特定thread的堆栈,那么选择那个thread,然后【SetFocus】,关闭threads对话框,在堆栈窗口中即可看到;

e、如果某个线程被挂住,那么此时所有的线程都挂住了,如果你step运行,所有的threads都会参与运行;

f、如果需要对某一个thread进行调试,那么需要对其他的thread进行suspend处理。

总结:

1、看内存、看堆栈、条件断点、数据断点需要综合使用。

2、编程越早调试,越好。

3、先编写好单线程程序,再编写好多线程程序。

4、对于多线程来说,模块设计>编程预防>调试>事后补救。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
QT实现日历显示 2022-12-17 21:25:19