Visual Studio中的常用調試功能(上)

1、利用斷點進行調試

添加斷點的方式有以下幾種

  • 1.鍵盤快捷鍵F9
  • 2.通過菜單【Debug(調試)】-》【Toggle BreakPoint(切換斷點)】
  • 3.點擊代碼行左邊的空白處(推薦)

設置斷點后,按F5運行程序,當運行到斷點處時就會暫停

此時可以 按F10逐過程或F11逐語句執行后面的程序語句

2、條件斷點

條件斷點會在條件觸發時斷點才生效。

假設有以下代碼(C#):

循環輸出 i,

1  static void Main(string[] args)
2         {
3            for(int i = 0;i<100;i++)
4             {
5                 Console.WriteLine(i);
6             }
7         }

如果我們想在i == 50的時候進入斷點,可以這么操作

1.按【利用斷點調試】中的方法建立斷點

2.在斷點上右鍵,選擇,條件。輸入 i == 50

3.按F5運行程序,當i = 50時,程序會暫停進入斷點。

3.數據斷點(限C++ Native)

數據斷點可以對指定變量進行監控,程序運行到變量值發生變化 時進入調試狀態。

注意:

1、數據斷點在程序執行后,才可以添加。

2、數據斷點只能對全局變量進行監控

創建C++控制臺應用程序

1 #include <iostream>2 3 int b = 0;4 5 int main()6 {7     std::cout << "Hello World!\n";8 9     b = 100;
10 }

我們在第7行處添加一個普通斷點,按F5執行程序。

當運行到第7行進行斷點時,通過快速監視功能,獲取變量b的地址。

然后通過菜單

Debug(調試)-》New Breakpoint(新建斷點)-》Data Breakpoint(數據斷點),打開數據斷點窗口。輸入變量b的地址,單擊確定

也可以通過將變量b添加監視

然后在監視窗口中變量b的選項中選擇值更改時中斷

這樣當變量b的值在更改時,就會觸發斷點

4.監視功能

將變量添加到監視后可以實時查看變量的變化。監視功能在調試全局變量時非常有用,可以實時查看變量的值。

通過調試-》窗口-》監視-》監視1,可以打開監視窗口。

將變量添加到監視后,可以實時查看變量值的變化

測試代碼如下:

1 int main()
2 {
3     int num = 0;
4 
5     for (int i = 0; i < 100; i++)
6     {
7         num++;
8     }
9 }

在num = 0處和num++處添加斷點,按F5執行程序,將num添加監視。

然后多次按下F5,可以看到num的值在變化。

5.快速監視

快速監視簡單來說就是執行單次監視功能。可以查看代碼執行到當前位置時,變量的值,還可以執行表達式。

快速監視可以方便我們在運行時,對變量執行相關操作,并且馬上可以看到結果。如有一個DataTable dt,我們想查找第一行某一列的值,如果單獨編寫代碼來完成,費時又費力,這時就可以借助快速監視功能,在表達式框中輸入 dt.Rows[0]["xx],再按下回車就可以看到結果。

這里我們對num執行快速監視,可以看到當前的值是32

執行表達式,如 num + 100,按下回車,可以看到值是132

6.調用堆棧

使用調用堆棧功能可以查看函數調用的層次結構。

通過調試-》窗口-》調用堆棧可以打開調用堆棧窗口

測試代碼如下:

1 #include <iostream>2 #include<Windows.h>3 4 void func2()5 {6     7 }8 9 void func1()
10 {
11     func2();
12 }
13 
14 
15 int main()
16 {
17     func1();
18 }

在func2函數中,添加一個斷點,按F5執行程序。打開調用堆棧,可以看到函數的調用層次

此時雙擊調用堆棧中的調用層次,可以跳轉到調用的地方 。

當程序拋出異常時,也可以打開調用堆棧,然后定位到引發異常的函數,并進行修改。

7.查看內存里的數據

在日常開發中,經常會需要進行數據的傳遞,一般會傳遞一個指針變量。而有時會因為某種原因而導致部分數據出錯。在排查問題時,就 可以使用內存窗口

通過調試-》窗口-》內存-》內存1,可以打開內存窗口。

測試代碼如下:

1 void PrintArray(int* ar,int size)2 {3     for (int i = 0; i < size; i++)4     {5         std::cout << *ar << std::endl;6         ar++;7     }8 }9 
10 int main()
11 {
12     int ar[]{ 1,2,3 };
13     PrintArray(ar, 3);
14 }

假設我們拿到了一直int指針,想查看指針指向的內存里的數據。如上面的ar,

在PrintArray函數中,添加斷點,按F5執行程序,當程序執行中斷點處時,打開內存窗口

首先復制指針所指向的內存地址

粘貼到內存窗口中,按下回車,可以看到內存里的數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93921.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93921.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93921.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux -- 線程同步

1.1條件變量 (1)當?個線程互斥地訪問某個變量時&#xff0c;它可能發現在其它線程改變狀態之前&#xff0c;它什么也做不了。 (2)例如?個線程訪問隊列時&#xff0c;發現隊列為空&#xff0c;它只能等待&#xff0c;只到其它線程將?個節點添加到隊列 中。這種情況就需要?到…

前端進階指南:JavaScript性能優化實戰全解析

深入剖析 JavaScript 性能瓶頸&#xff0c;分享優化技巧與最佳實踐&#xff0c;讓你的前端應用更快、更穩、更流暢。 &#x1f4d1; 目錄 一、前言 二、性能瓶頸的常見來源 三、JavaScript代碼優化技巧 1. 避免重復計算 2. 合理使用防抖與節流 3. 使用事件委托 四、渲染…

RabbitMQ:SpringAMQP Direct Exchange(直連型交換機)

目錄一、案例需求二、基礎配置三、代碼實現直連型交換機也叫做定向交換機&#xff0c;通過RoutingKey綁定交換機與隊列直接的關系。 生產者源碼 消費者源碼 一、案例需求 在RabbitMQ控制臺中&#xff0c;聲明隊列direct.queue1和direct.queue2。在RabbitMQ控制臺中&#xff…

implement libtime on Windows

因為Windows的time命令和Linux的time命令不一樣&#xff0c;嘗試實現libtime libtime.h /** libtime.h - 跨平臺時間測量庫* 功能&#xff1a;執行外部命令并測量其運行時間和資源使用*/#ifndef LIBTIME_H #define LIBTIME_H#include <stdio.h> #include <stdlib.h>…

Unity進階--C#補充知識點--【C#各版本的新功能新語法】C#1~4與C#5

來源于唐老獅的視頻教學&#xff0c;僅作記錄和感悟記錄&#xff0c;方便日后復習或者查找 一.C#版本與Unity的關系 1.各Unity版本支持的C#版本 更多信息可以在Untiy官網說明查看 https://docs.unity3d.com/2020.3/Documentation/Manual/CSharpCompiler.html&#xff08;這個好…

水閘安全綜合監測系統解決方案

一、方案概述 水閘作為重要的水利工程設施&#xff0c;承擔著防洪、排澇、供水和灌溉等關鍵功能。其安全性直接關系到下游人民群眾的生命財產安全以及區域經濟的穩定發展。近年來&#xff0c;隨著極端天氣頻發和工程老化問題日益突出&#xff0c;水閘安全監測工作顯得尤為重要。…

基于單片機智能點滴輸液系統

傳送門 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目速選一覽表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品題目功能速覽 概述 該系統基于單片機控制技術&#xff0c;結合傳感器和無線通信模塊&#xff0c;實現對輸液過程的實…

AI數據倉庫管理提升效率

內容概要在數字化轉型浪潮中&#xff0c;AI數據倉庫管理正重塑企業數據處理格局。本部分簡要介紹其核心機制&#xff0c;即通過智能API接入外部數據源實現多平臺數據無縫整合&#xff0c;隨后應用數據清洗技術去除冗余信息&#xff0c;確保數據質量。同時&#xff0c;加密存儲機…

使用 Docker 安裝長安鏈管理平臺 + 部署區塊鏈與示例合約

文章目錄簡介登錄官網GithubPodman 配置&#xff08;Docker 配置 registry 地址&#xff09;安裝長安鏈管理平臺下載源碼docker-compose.yml登錄管理平臺部署區塊鏈Dockerfile構建鏡像部署長安鏈訂閱區塊鏈部署合約下載示例合約部署示例合約投票管理文件哈希存證查找存證信息區…

Python訓練營打卡 DAY 41 簡單CNN

知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 → Batch歸一化層…

云端賦能,智慧運維:分布式光伏電站一體化監控平臺研究

摘要 本文針對分布式光伏電站存在的監管困難、火災隱患、系統繁雜及運維不規范等行業痛點&#xff0c;提出AcrelCloud-1200光伏運維云平臺解決方案。平臺通過ANet-1E2S-4G網關集成多品牌逆變器數據&#xff0c;結合視頻監控與氣象站&#xff0c;實現電站全域監測&#xff1b;開…

CVPR 2025 | 具身智能 | HOLODECK:一句話召喚3D世界,智能體的“元宇宙練功房”來了

關注gongzhonghao【CVPR頂會精選】1.導讀1.1 論文基本信息論文標題&#xff1a;《HOLODECK: Language Guided Generation of 3D Embodied AI Environments》作者&#xff1a;Yue Yang*1, Fan-Yun Sun*2, Luca Weihs*4, Eli Vanderbilt4, Alvaro Herrasti4,Winson Han4, Jiajun …

迅為RK3568開發板搭建Ubuntu環境

本小節介紹開發所需 Ubuntu 環境的搭建方法。系統要求:Ubuntu 系統要求&#xff1a;Ubuntu18.04~21.10 版本。推薦使用 20.04 版本&#xff0c;內存 16GB 及以上&#xff0c;硬盤 100GB 及以上。Ubuntu 系統的用戶名不能包含中文字符。建議 Ubuntu 和 Windows 系統上安裝的 Dev…

【數據結構】用堆解決TOPK問題

設計一個算法&#xff0c;找出數組中最小的k個數。以任意順序返回這k個數均可。示例&#xff1a;輸入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 輸出&#xff1a; [1,2,3,4]比較替換堆頂的數時&#xff0c;不需要讓堆頂與數組的每一個數再進行比較&#xff0c;比較數組減去k個…

【深度長文】Anthropic發布Prompt Engineering全新指南

目錄 1.什么時候適合用提示工程? 2.如何進行提示工程 2.1 使用提示模板 2.1.1 使用提示模板和變量 2.1.2 何時使用提示模板和變量 2.1.3 提示模板示例 2.2 保持清晰和直接 2.2.1 如何保持清晰、具有上下文和具體 2.2.2 示例 ?2.3 使用示例&#xff08;多示例提示…

【基礎-判斷】HarmonyOS提供了基礎的應用加固安全能力,包括混淆、加密和代碼簽名能力

正確 解釋如下: 應用加固: 這是指對應用程序進行保護,使其更難被逆向工程、篡改或盜版。HarmonyOS 作為現代操作系統,確實提供了這樣的基礎安全能力。 混淆: HarmonyOS 的 SDK 提供了代碼混淆工具(通常基于 ProGuard 或類似技術)。開發者在構建應用時啟用混淆,可以將類…

HTML 框架:構建網頁布局的基石

HTML 框架&#xff1a;構建網頁布局的基石 引言 HTML 框架是網頁設計中不可或缺的一部分&#xff0c;它為網頁內容的布局提供了強大的支持。本文將深入探討 HTML 框架的概念、種類、應用以及如何有效地使用它們來構建網頁布局。 什么是 HTML 框架&#xff1f; HTML 框架是一種網…

[Linux]學習筆記系列 -- [mm][memblock]

文章目錄mm/memblock.c: Linux內核的“拓荒時代”內存管理器一、 核心問題&#xff1a;為什么需要 memblock&#xff1f;二、 核心原理與設計三、 在內核啟動流程中的角色四、 關鍵 API五、 總結include/linux/memblock.hmm/memblock.cmemblock_reserve 預留內存塊for_each_mem…

Java 面試八股文匯總(1000 道附答案解析)

在過 2 個月即將進入金九銀十了&#xff0c;然而面對今年的大環境而言&#xff0c;跳槽成功的難度比往年高了很多&#xff0c;很明顯的感受就是&#xff1a;對于今年的 java 開發朋友跳槽面試&#xff0c;無論一面還是二面&#xff0c;都開始考驗一個 Java 程序員的技術功底和基…

給純小白的Python操作 PDF 筆記

一、文件基礎打開與關閉 推薦用 with open(path, mode, encodingutf-8) as f:&#xff0c;自動完成 close()&#xff0c;避免泄露文件句柄。常見模式&#xff1a;r 讀&#xff0c;w 寫覆蓋&#xff0c;a 追加&#xff0c;rb/wb 二進制。Windows 默認編碼為 GBK&#xff0c;Linu…