Visual Studio 設置數據斷點以及條件斷點

1 示例代碼

#include <iostream>

using namespace std;

class A
{
public:
	A();
	virtual ~A();

	void Add();
private:
	int m;
};


A::A()
{
	m = 0;
}

A::~A()
{
}

void A::Add()
{
	m++;
}


int main()
{
	A Test;

	for (int i=0;i<10;++i)
	{
		Test.Add();
	}

	return 0;
}

很簡單的一個程序,我們通過調用Add方法改變成員變量m的值,所以可以針對於變量m設置數據斷點和邏輯斷點。

2 數據斷點

斷點作用:用於檢測任意變量,包括類中或者結構體中某個成員變量的值發生了變化,如果此時設置了數據斷點,只要該變量的值發生了變化就會觸發數據斷點,導致程序中斷。用於Debug時,查找莫名其妙改變值的變量,用於鎖定隱藏bug,以及通過堆棧信息梳理邏輯漏洞。

2.1 根據內存地址設置數據斷點

參考1中示例代碼,針對成員變量m設置數據斷點,只要成員變量的值m發生了變化則觸發數據斷點。
先在示例代碼第36行設置一個普通斷點,第36行爲:

	for (int i=0;i<10;++i)

目的是,先執行代碼行:

	A Test;

使得對象構造成功。

然後對Test對象的成員變量m添加監視,如下圖:
在這裏插入圖片描述
然後對監視對象添加&,獲取Test.m在內存中的地址,如下圖:
在這裏插入圖片描述
在這裏插入圖片描述
然後點擊調試-新建斷點-數據斷點,如下圖
在這裏插入圖片描述
然後將Test.m的內存地址填入進入就OK了,F5運行程序,即可觸發數據斷點。
在這裏插入圖片描述
在這裏插入圖片描述

2.2 根據變量名設置數據斷點

如果不想像上述步驟一樣通過添加監視獲取變量地址,通過變量地址設置數據斷點,可以使用變量名的方式。
直接打開調試-新建斷點-數據斷點,填入&(變量名),運行即可觸發數據斷點。

在這裏插入圖片描述
在這裏插入圖片描述

3 條件斷點

作用:當變量值滿足某種條件時,觸發斷點。
以Test.m == 5觸發斷點爲例。
依然在示例代碼第39行設置一個普通斷點,第39行爲:
在這裏插入圖片描述
用鼠標在該斷點上停留,則會出現如下設置按鈕:
在這裏插入圖片描述
點擊設置按鈕-條件,如下圖:
在這裏插入圖片描述
在條件表達式中輸入:

Test.m == 5

如下圖:
在這裏插入圖片描述
然後調試運行程序,即可觸發條件斷點
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章