那些VisualStudio隱藏的調試功能

VisualStudio是一個強大的調試工具,里面很多隱藏功能少有人問津,但是在特定場景可以節省你很多時間,本文主要介紹一些VisualStudio調試相關的隱藏功能,歡迎大家補充。

運行到指針(Run to cursor)

大多數人用Visual Studio在調試程序的時候先在程序開始的時候設置一個斷點,然后依次F10/F11到自己想要查看的邏輯。如果這個過程我們需要仔細查看每一步的變量或者執行路徑,這樣做無可厚非,但是如果我們不想關心前面執行的邏輯,我們可以使用Run to cursor功能,只需要鼠標指針點到你想要執行到的那一行代碼,Ctrl+F10,程序直接停在了鼠標指針的那行代碼。

條件斷點(Conditional Breakpoint)

斷點大家都會用,條件斷點相信對于經常調試的也不陌生,使用方法如下圖,

看上面這個右鍵菜單,Hit Count估計很多人也再用,用它來指定在第幾次hit到這個斷點的時候斷下來,

接下來就更高級一些,Filter,相信很多人在調試多線程程序的時候都遇到過被其他線程干擾吧,好不容易斷下來,一步一步F10,忽然間另外一個線程又把前面斷點hit了,剛才我跳的線程是哪個?想找到就難了。接下來就需要Filter來出場了。通過Filter我們可以過濾需要break的機器/進程/線程。

接下來就是When Hit選項了,這個估計很多人用過它來跟蹤變量,上圖,帶過。

Export, 導出斷點的功能用的就更少了,其實有些場景斷點導出可以讓你少費很多話。比如你在某段代碼發現一個別人的bug,你可以將斷點導出為xml,然后將它attach到bug上,bug owner直接找到對應版本導入斷點,運行程序就可以了。

數據提示(Data Tips)

調試的時候將鼠標放在變量名上來查看關心的數據,我們都是這么做的,但是如果一段邏輯需要反復執行,例如調試某段算法,你可以多點一下鼠標,將這個變量釘在代碼旁邊,這樣比去watch窗口看要少轉很多眼珠哦。

另外這些data tip也是可以導入和導出的。

查看反匯編代碼

查看反匯編代碼可以說是一個VisualStudio里面的一個隱藏功能,這個功能很少有人會注意到,但是對于我們想要學習匯編語言或者理解一些特定的編譯器行為有很大的幫助。這個功能將匯編語言和源代碼參照顯示,理解起來容易許多。

使用該功能很簡單,以我們在windbg u/uf/ub命令介紹中的程序代碼qsort.c為例,在VisualStudio里面打開程序,設置斷點,直接通過VisualStudio運行程序,或者attach到已經運行的程序中,當斷點被觸發后,右鍵然后選擇go to disassembly,

反匯編效果如下,接下來再看swap方法的匯編代碼,是不是很容易理解了?

?

?

Aaron Zhang

轉載于:https://www.cnblogs.com/developersupport/p/visualstudio-debugging-tips.html

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

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

相關文章

php連接數據庫代碼_PHP代碼連接各種數據庫

php連接數據庫代碼1)用PHP連接MySQL (1) Connecting with MySQL in PHP) <?php$host "localhost";$uname "username";$pw "password";$db "newDB";try {$conn new PDO("mysql:host$host;dbname$db", $uname, $pw);…

【C++ grammar】對象和類(創建對象、對象拷貝、分離聲明與實現)

目錄1、用類創建對象1、面向對象的特征2、對象由什么構成3、如何定義對象4、創建對象并訪問對象成員1. Constructors(構造函數)2. Constructing Objects (創建對象)3. Object Member Access Operator(對象訪問運算符)2、對象拷貝以及分離聲明與實現1、類是一種數據類型1.1. 定義…

十一、圖像二值化

一、二值圖像 其實就是把圖像轉換為只有黑白的兩種顏色圖像&#xff0c;即像素值非零即一 三角閾值二值化 對一個圖像進行操作&#xff0c;獲取圖像的直方圖&#xff0c;找到波峰和波谷進行連線設為線段A&#xff0c;每個點做有關線段A的垂線垂足在線段A上&#xff0c;最后將…

百度地圖LV1.5實踐項目開發工具類bmap.util.jsV1.2

/*** 百度地圖使用工具類-v1.5* * author boonya* date 2013-7-7* address Chengdu,Sichuan,China* email boonyasina.com* company KWT.Shenzhen.Inc.com* notice 有些功能需要加入外部JS庫才能使用&#xff0c;另外還需要申請地圖JS key .* 申請地址&#xff1a;http…

isatty_帶有示例的Python File isatty()方法

isatty文件isatty()方法 (File isatty() Method) isatty() method is an inbuilt method in Python, it is used to check whether a file stream is an interactive or not in Python i.e. a file stream is connected to a terminal device. If a file is connected to a ter…

地毯店 如何辨別地毯的好壞?

在實地選購地毯品牌時&#xff0c;許多地方需要引起注意&#xff0c;而且要顯得專業&#xff0c;這樣才能科學深入地辨別地毯的好壞。比如&#xff0c;辨明拉絞地毯和抽絞地毯兩種工藝的打結方法幾乎相同&#xff0c;只是變絞形式上有所區別。抽絞的方式較古老&#xff0c;一般…

十二、圖像金字塔

一、原理 reduce高斯模糊降采樣 expand擴大卷積 PyrDown&#xff1a;降采樣 PyrUp&#xff1a;還原 二、高斯金字塔 import cv2 import numpy as np from matplotlib import pyplot as pltdef pyramid(image):level 3temp image.copy()pyramid_image []for i in range(le…

java uuid靜態方法_Java UUID toString()方法與示例

java uuid靜態方法UUID類toString()方法 (UUID Class toString() method) toString() method is available in java.util package. toString()方法在java.util包中可用。 toString() method is used for string denotation of this UUID. toString()方法用于此UUID的字符串表示…

LeetCode 110. 平衡二叉樹思考分析

題目 給定一個二叉樹&#xff0c;判斷它是否是高度平衡的二叉樹。 本題中&#xff0c;一棵高度平衡二叉樹定義為&#xff1a; 一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。 示例 1: 給定二叉樹 [3,9,20,null,null,15,7] 3 / 9 20 / 15 7 返回 true 。 示例 2…

Redhat配置XDMCP及相關linux命令

為了能夠使用 Xwin32 或 Xmanager 登錄到 Linux 主機所進行的配置。需要首先在linux上進行相關配置 1.“系統”菜單中選擇“管理”下的“登錄屏幕” 2.出現“登錄窗口首選項”窗口。選擇“遠程”選項卡&#xff0c;將“樣式”改為:“與本地相同” 3.選擇“安全”選項卡&#xf…

充實的日子里忙忙碌碌

實習已經有一個多月了&#xff0c;話說這個月發工資就有我的份兒了&#xff0c;哇咔咔~~~感覺忙忙碌碌的生活其實很充實的。工作日每天都是7點10分左右起來&#xff0c;8點半到公司買早飯吃東西&#xff0c;9點上班開工。先羅列要干的東西&#xff0c;然后一項一項完成&#xf…

十三、圖像梯度

一、兩種算子 一階導數—Sobel算子 水平梯度&#xff1a; 垂直梯度&#xff1a; 最終圖像梯度&#xff1a; 二階導數—Laplacian算子 在二階導數的時候&#xff0c;最大變化處的值為零&#xff0c;即邊緣是零值。 常見的拉普拉斯算子&#xff1a;、其所有元素之和為零。…

Java Formatter out()方法與示例

格式化程序類out()方法 (Formatter Class out() method) out() method is available in java.util package. out()方法在java.util包中可用。 out() method is used to get Appendable for the output. out()方法用于獲取輸出的Appendable。 out() method is a non-static meth…

SQL2008,SQL2005存儲過程解密

SQL2008,SQL2005存儲過程解密 下載&#xff1a;附件 SQL2008,SQL2005存儲過程解密第一步操作步驟&#xff1a;程序->Sql Server2005-> 配置工具-> Sql Server 外圍應用配置器-> 功能的外圍應用配置器-> DataBase Engine-> DAC -> 啟用遠程DAC 第二步&a…

LeetCode 257. 二叉樹的所有路徑 思考分析

目錄題目思路一&#xff1a;深度遞歸思路二&#xff1a;廣度迭代關于回溯題目 給定一個二叉樹&#xff0c;返回所有從根節點到葉子節點的路徑。 說明: 葉子節點是指沒有子節點的節點。 示例: 輸入: 輸出: [“1->2->5”, “1->3”] 解釋: 所有根節點到葉子節點的路…

自定義django的Template context processors

簡要步驟&#xff1a; 1.編輯一個函數: def media_url(request):from django.conf import settingsreturn {media_url: settings.MEDIA_URL}2.配置settings&#xff1a; TEMPLATE_CONTEXT_PROCESSORS (myapp.context_processors.media_url,) 3.確保幾點&#xff1a; 1&#xf…

十四、Canny邊緣提取

一、算法步驟 1&#xff0c;對圖像進行GaussianBlur(高斯模糊)消除一些噪聲 2&#xff0c;對圖像進行灰度轉換cvtColor 3&#xff0c;計算梯度Sobel/Scharr 4&#xff0c;非最大信號抑制 5&#xff0c;高低閾值輸出二值圖像 設定兩個閾值T1和T2&#xff0c;凡是高于T2的都保…

scanner close_Java Scanner close()方法與示例

scanner close掃描器類close()方法 (Scanner Class close() method) close() method is available in java.util package. close()方法在java.util包中可用。 close() method is used to close this Scanner object when opened otherwise this method does not affect. 當打開…

flex3.0中打包的方法swc

flex3.0中打包的方法&#xff1a; 1. 新建一個 flex library project 2. 彈出的對話框 點 next ,在Classes下&#xff0c;找到Main source folder 點瀏覽 3. 選擇你新建的文件夾 點 new 然后點擊 OK 4. 這個時候 Classes 下多了個src 文件夾&#xff0c;打開源文件夾&#xf…

Java Hashtable get()方法與示例

哈希表類的get()方法 (Hashtable Class get() method) get() method is available in java.util package. get()方法在java.util包中可用。 get() method is used to return the value associated with the given key element (key_ele) in this Hashtable. get()方法用于返回與…