成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 分享Visual Studio原生開發(fā)的10個調(diào)試技巧

分享Visual Studio原生開發(fā)的10個調(diào)試技巧

熱門標簽:寧波自動外呼系統(tǒng)代理 手機地圖標注如何刪除 世紀佳緣地圖標注怎么去掉 巫師3為什么地圖標注的財寶沒有 怎么給超市做地圖標注入駐店 外呼系統(tǒng)代理品牌 十堰正規(guī)電銷機器人系統(tǒng) 外呼系統(tǒng)費用一年 辦理400電話證件
最近碰巧讀了Ivan Shcherbakov寫的一篇文章,《11個強大的Visual Studio調(diào)試小技巧》。這篇文章只介紹了一些有關Visual Studio的基本調(diào)試技巧,但是還有其他一些同樣有用的技巧。我整理了一些Visual Studio(至少在VS 2008下)原生開發(fā)的調(diào)試技巧。(如果你是工作在托管代碼下,調(diào)試器會有更多的特性,在CodeProject中有介紹它們的文章),下面是我的整理的一些技巧:

異常中斷 | Break on Exception
Watch窗口中的偽變量 | Pseudo-variables in Watch Windows
符號越界后查看堆對象 |
查看數(shù)組的值
避免進入不必要的函數(shù)
從代碼啟動調(diào)試器 | Launch the debugger from code
在Output窗口打印
隔離內(nèi)存泄漏
調(diào)試發(fā)行版 | Debug the Release Build
遠程調(diào)試


技巧1: 異常中斷

在處理被調(diào)用之前,異常發(fā)生時可以 啟動調(diào)試器進行中斷,可以讓你在異常發(fā)生后立即調(diào)試程序。操作調(diào)用棧便于你去查找異常發(fā)生的根本原因。

Vistual Studio允許你去指定想要中斷的異常類型或者特殊異常。選擇菜單Debug>Exceptions彈出對話框,你可以指定原生的(或者托管的)異常,除了調(diào)試器自帶的一些默認異常,你還可以添加自己的自定義異常。

下面是一個std::exception 異常拋出時調(diào)試器中斷的例子。

更多閱讀:

  • 1.  異常拋出時如何中斷
  • 2.  如何添加新的異常
技巧2:Watch窗口中的偽變量

Watch窗口或QuickWatch對話框提供一些特定的(調(diào)試器可識別的)變量,被稱為偽變量。文檔包含以下:

$tid—–當前線程的線程ID
$pid——進程ID
$cmdline———-啟動程序的命令行字符串
$user———-正在運行程序的賬戶信息
$registername—–顯示寄存器registername 的內(nèi)容
不管怎么樣,關于最后一個錯誤的偽變量是非常有用的:

$err——–顯示最后一個錯誤的錯誤碼
$err,hr—顯示最后一個錯誤的錯誤信息

更多閱讀:偽變量

技巧3:符合越界后查看堆對象

有時候,在調(diào)試符號越界后,你還想查看對象的值,這個時候,watch窗口中的變量是被禁用的,不能再查看(也不能更新),盡管對象仍然存在。你如果知道對象的地址,可以繼續(xù)充分地觀察它。你可以將地址轉(zhuǎn)換為該對象類型的指針,放在watch窗中。

下面的例子中,當單步跳出do_foo()之后,_foo不能再被訪問。但是,將它的地址轉(zhuǎn)換為foo*后,就可以繼續(xù)觀察這個對象。

技巧4:查看數(shù)組的值

如果你在操作一個很大的數(shù)組(我們假設至少有幾百個元素吧,但是可能更少),在Watch窗口中展開數(shù)組,查找一些特定范圍內(nèi)的元素很麻煩,因為你要不停地滾動.如果數(shù)組是分配在堆上的話,你甚至不能在watch窗口中展開數(shù)組元素.對此,有一個解決辦法。你可以使用(array+ offset>),count> 去查看從offset>位置開始的特定范圍的count>元素(當然,這兒的數(shù)組是你的實際對象)。如果想查看整個數(shù)組,可以簡單使用array,count>.

如果你的數(shù)組是在堆上,你可以在watch窗口中將它展開,但是要查看某個特定范圍的值,用法稍有不同:((T*) array + offset>),count>(注意這種用法對于堆上的多維數(shù)組也有效)。但是這種情況下,T是指數(shù)組元素的類型。

如果你在用MFC,并使用其中的'array'容器,像 CArray, CDWordArray,CStringArray等等。你當然可以使用同樣的過濾方法。除此之外,你必須查看array的m_pData成員,它是保存數(shù)據(jù)的真實緩存。

技巧5:避免進入不必要的函數(shù)

很多時候,你在調(diào)試代碼時可能會進入到你想跳過的函數(shù),像構(gòu)造函數(shù),賦值操作或者其他的。其中最困擾我的是CString構(gòu)造函數(shù)。下面是一個例子,當你準備單步執(zhí)行take_a_string()函數(shù)時,首先進入到CString的構(gòu)造函數(shù)。

void take_a_string(CString const text){}void test_string(){ take_a_string(_T("sample"));}


幸運的是可以告訴調(diào)試器去跳過哪些方法,類或者整個命名空間。實現(xiàn)它的方法也已經(jīng)改變了,回到使用VS6的日子,通常是通過autoexp.dat文件來指定的。Vistual Studio 2002改成了使用注冊表設置。想要跳過一些函數(shù),你需要在注冊表里添加一些值(詳情如下):

    實際位置取決于你使用的Vistual Studio版本和操作系統(tǒng)平臺(x86或x64,因為注冊表只能在64位的Windows下瀏覽)值的名字是數(shù)字,代表規(guī)則的優(yōu)先級;數(shù)字越大,優(yōu)先級越高。值數(shù)據(jù)是一個正則表達式的REG_SZ值,用于指定怎樣過濾和執(zhí)行。

為了避免進入任何CString方法,我添加了下面的規(guī)則:

有了這個,即使你強制進入上例中的take_a_string(),調(diào)試器也會跳過CString的構(gòu)造函數(shù)。

更多閱讀:

  •  使用Visual C++調(diào)試器怎樣避免進入函數(shù)
  • 使用AutoExp.dat調(diào)整調(diào)試器

技巧6:從代碼啟動調(diào)試器 Launch the debugger from code

你可能很少需要將調(diào)試器附加到程序中,但你不能在Attach窗口這樣做(可能因為中斷發(fā)生太快而沒有捕獲到),你也不能一開始就在調(diào)試器中啟動程序。你可以在程序中產(chǎn)生中斷給調(diào)試器一個機會通過調(diào)用內(nèi)部的_degbugbreak()來附加。

復制代碼 代碼如下:

void break_for_debugging() {
__debugbreak();
}

實際上還有其他的方法來完成,例如觸發(fā)中斷3,但這僅僅適用于x86平臺(C++64位不再支持ASM)。另外還有DebugBreak()函數(shù),但它的使用不怎么簡便,所以這里推薦使用內(nèi)部方法。

復制代碼 代碼如下:
__asm int 3;

   程序運行內(nèi)部方法時會停止運行,這時你就有機會將調(diào)試器附加到該進程。

更多閱讀:

  •  內(nèi)部方法_debugbreak
  • 任何時候都離不開設置斷點和斷言
  • Visual Studio 20005/2008的調(diào)試,第四部分:為調(diào)試器設置代碼
技巧7:在output窗口打印

通過調(diào)用DebugOutputString可以在調(diào)試器的output窗口顯示一段特定的文本。如果沒有附加的調(diào)試器,該函數(shù)什么也不做。

更多閱讀:

  • 函數(shù)OutputDebugString
  • 函數(shù)OutputDebugString的調(diào)用機制
技巧8:隔離內(nèi)存泄漏

內(nèi)存泄漏是在原生開發(fā)中的一個很重要的問題,要檢測內(nèi)存泄漏是一個很嚴峻的挑戰(zhàn),尤其是在大型項目中。Vistual Studio可以提供檢測內(nèi)存泄漏的報告,還有其他的一些應用程序(免費的或商業(yè)的)也可以幫助你檢測內(nèi)存泄漏.有些情況下,在一些內(nèi)存分配最終會導致泄漏時,可以使用調(diào)試器去中斷。但是你必須找到可再現(xiàn)的分配編號(盡管沒那么容易)。如果能做到這一點,執(zhí)行程序時調(diào)試器才會中斷。

我們來看下面的代碼,分配了8個字節(jié),卻一直沒釋放分配的內(nèi)存。Visual Studio提供了造成內(nèi)存泄漏的對象的報告,多運行幾次,會發(fā)現(xiàn)一直是同一個分配編號(341)。

復制代碼 代碼如下:

void leak_some_memory()
{
char* buffer = new char[8];
}
Dumping objects ->
d:\marius\vc++\debuggingdemos\debuggingdemos.cpp(103) : {341} normal block at 0x00F71F38, 8 bytes long.
Data: > CD CD CD CD CD CD CD CD


在一個特定的(可復現(xiàn)的)位置中斷的步驟如下:

確定你有足夠的關于內(nèi)存泄漏的報告模式(參考 使用CRT庫檢測內(nèi)存泄漏)
多次運行程序直到你能在程序運行結(jié)束后的內(nèi)存泄漏報告里找到一個可復現(xiàn)的分配編號,例如上個例子中的(341)
在程序一開始的地方設置一個斷點以便你能夠盡早地進行中斷。
當最初的中斷發(fā)生時,watch窗口的Name欄里會顯示:{,,msvcr90d.dll}_crtBreakAlloc,在Value欄里寫入你想要查找的位置編號
繼續(xù)調(diào)試(F5)
程序執(zhí)行到指定位置會停止,你可以使用調(diào)用棧被指引找到被該位置觸發(fā)的那段代碼。
遵循這些步驟, 在上個例子中,使用分配的編號(341)就可以識別內(nèi)存泄漏的起因。

技巧9:調(diào)試發(fā)行版

調(diào)試和發(fā)布是兩個不同的目的。調(diào)試配置是用于開發(fā)的,而發(fā)布配置,顧名思義,是用來作為程序的最終版本,因為它必須嚴格遵循發(fā)布的質(zhì)量要求,該配置包含優(yōu)化部分和調(diào)試版本的中斷調(diào)試的設置。而且,有時候,要像調(diào)試調(diào)試版本一樣去調(diào)試發(fā)行版。要做到這一點,你需要在配置里做一些改變。但是這種情況下,你就不再是在調(diào)試發(fā)行版,而是調(diào)試和發(fā)行的混合版。

你還應該做一些事兒,以下是必須要做的:

配置C/C++ >General>Debug Information Format 應該為 “Program Database(/Zi)”
配置C/C++ >Optimization>Optimization 應該為”Disabld(/Od)”
配置Linker>Debugging>Generate Debug Info 應該為”Yes/(DEBUG)”
如圖所示:

更多閱讀:怎樣調(diào)試發(fā)行版

技巧10:遠程調(diào)試

另一個重要的調(diào)試就是遠程調(diào)試,這是一個更大的話題,多次被提到,這里我只做一下簡單的概括:

你需要在遠程機器上安裝遠程調(diào)試監(jiān)控
遠程調(diào)試監(jiān)控必須以管理員身份運行,并且用戶必須屬于管理員組
在你運行監(jiān)控時,會開啟一個新的服務,該服務的名字必須用Visual Studio的Attach to Progress窗口的Qualifier組合框的值。

  1. 遠程和本地機器上的防火墻必須允許Visual Studio和遠程調(diào)試監(jiān)控之間能夠通信
  2. 想要調(diào)試,PDB文件是關鍵;為了能夠讓VisualStudio自動加載它們,必須滿足以下條件:

1)本地的PDB文件必須可用(在遠程機器的相同路徑下放置一個對應的模塊)。

 2) 遠程機器上的托管PDB文化必須可用。

遠程調(diào)試監(jiān)控下載:

  •  Visual Studio 2008 Service Pack 1 Remote Debugger
  • Microsoft Visual Studio 2010 Remote Debugger

更多閱讀:

  • 設置遠程調(diào)試
  • 怎么運行遠程調(diào)試監(jiān)控
  • 遠程調(diào)試時加載調(diào)試符號:本地對托管
  • PDB文件:開發(fā)者須知
  • Visual Studio遠程調(diào)試和PDB文件
  • 怎樣指定符號位置和加載行為
結(jié)束語

Ivan Shcherbakov那篇文章和我這篇文章提到的調(diào)試技巧,在大多數(shù)的調(diào)試問題中都是必不可少的。想要知道更多的關于調(diào)試技巧的知識,建議閱讀文章中提供的額外閱讀。

原文鏈接: Marius Bancila   翻譯: 伯樂在線 - 伯樂在線讀者
譯文鏈接: http://blog.jobbole.com/45249/
您可能感興趣的文章:
  • 分享Visual Studio原生開發(fā)的10個調(diào)試技巧(2)
  • Visual Studio調(diào)試技巧匯總
  • 12個Visual Studio調(diào)試效率技巧(小結(jié))

標簽:山西 嘉興 天門 通遼 泰州 牡丹江 景德鎮(zhèn) 巨人網(wǎng)絡通訊聲明:本文標題《分享Visual Studio原生開發(fā)的10個調(diào)試技巧》,本文關鍵詞  分享,Visual,Studio,原生,開發(fā),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。

  • 相關文章
  • 下面列出與本文章《分享Visual Studio原生開發(fā)的10個調(diào)試技巧》相關的同類信息!
  • 本頁收集關于分享Visual Studio原生開發(fā)的10個調(diào)試技巧的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美激情四色| 国产在线不卡| 国产精品久久久久免费a∨大胸| 日本免费三片免费观看| 亚洲国产精品一区二区第四页av| 免费看黄视频网站| 午夜精品一区二区三区电影天堂| 午夜久久电影网| 一区二区自拍偷拍| 国产精品一区二区在线| 欧美一区二区影院| 日韩av免费看网站| 欧美日韩成人高清| 国产伦精品一区二区三区视频免费| 亚洲老女人av| 精品按摩偷拍| 日韩一区二区免费视频| 日韩av一区二区三区在线| 亚洲精品美国一| 激情小说中文字幕| 亚洲精品日产aⅴ| 黄网页在线观看| 精品人妻一区二区三区浪潮在线| 欧美极品少妇xxxxⅹ喷水| 91精品啪在线观看国产爱臀| 久久久久久久九九九九| 久久亚洲私人国产精品va| 精品国产三级电影在线观看| 欧美极品中文字幕| 欧美黄色免费影院| 九九视频九九热| 亚洲人成免费| 亚州av中文字幕在线免费观看| 色综合久久综合中文综合网| 国产精品色婷婷视频| 欧美一级视频在线| 136国产福利精品导航网址| 国产精品xxx视频| 日夜操在线视频| 一区av在线播放| 黄色污污视频软件| 2014亚洲片线观看视频免费| 欧美三级一区二区三区| 国产成人综合亚洲| 亚洲精品影片| 亚洲精品久久久久久一区二区| 天美传媒免费在线观看| 欧美色视频一区二区三区在线观看| 日本妇乱大交xxxxx| 免费成人美女女在线观看| 国产伦精品一区二区三区免.费| 97精品免费视频| 欧美日本成人| 欧洲精品中文字幕| 亚洲精品国产成人影院| 欧美日韩福利在线| 天天操天天爱天天干| 日韩激情免费视频| 国产精品第一第二| 欧美黄页免费| 麻豆一区二区麻豆免费观看| 91久久精品美女高潮| 久久久亚洲国产美女国产盗摄| 刘亦菲国产毛片bd| 欧美成人欧美edvon| 亚洲春色综合另类校园电影| 开心激情五月婷婷| 蜜桃av噜噜一区二区三区麻豆| 香蕉久久a毛片| 影音先锋5566资源站| 无码人妻丰满熟妇区毛片| 日韩一区二区三区在线视频| 欧美理论一区二区| 青春草国产成人精品久久| 天美星空大象mv在线观看视频| 欧美一区二区三区播放| 99精品视频一区二区| 少妇久久久久久被弄到高潮| 日韩视频在线直播| 精品伦精品一区二区三区视频| 日韩乱码在线视频| 亚洲一区成人| 91av在线播放| 亚洲精品成人a在线观看| 伊人久久一区二区三区| 日韩亚洲电影在线| 午夜私人影院在线观看| 欧美日韩国产999| 免费在线中文字幕| 日韩精选在线观看| 午夜先锋成人动漫在线| 亚洲在线视频免费| 黄色片一区二区| 欧美一区二区高清在线观看| 亚洲人成网站精品片在线观看| 免费精品国产的网站免费观看| 色天使在线观看| 亚洲一区二区在线观看视频| 捆绑调教美女网站视频一区| 国产亚洲精品中文字幕| av在线免费观看国产| 88国产精品欧美一区二区三区| 国产极品美女到高潮| 日韩一级免费一区| 韩国三级av在线免费观看| 国产va免费精品观看精品| 麻豆av免费在线观看| 懂色av粉嫩av蜜乳av| 91精品秘密在线观看| 欧美天堂一区二区三区| 日韩一区二区三区四区五区| 老牛影视av一区二区在线观看| 久久精品亚洲成在人线av网址| 欧美久久天堂| 国产免费拔擦拔擦8x在线播放| 国产一区二区三区美女| 欧美日韩免费在线观看| 国产精品爽爽爽爽爽爽在线观看| 色久视频在线播放| 日韩中文字幕无砖| 亚洲高清一区二区三区| av一级二级| 一本二本三本亚洲码| 奇米777国产一区国产二区| 9999在线观看| 成人毛片在线| 黄网址在线看| 主播大秀视频在线观看一区二区| 欧美 中文字幕| 在线观看av黄网站永久| 国产偷人爽久久久久久老妇app| 超碰人人爱人人| 日韩风俗一区 二区| 日本三级中文字幕| 亚洲激情成人| 国产精品青草久久| 99热国内精品永久免费观看| 欧美精品密入口播放| 日本黄色入口| 国产视频在线观看一区二区三区| www五月婷婷| 波多野结衣啪啪| 国模少妇一区二区三区| 日批免费在线观看| 91禁国产网站| 一色桃子av在线| 一区二区三区国产豹纹内裤在线| 欧美成人基地| ijzzijzzij亚洲大全| 一区二区三区网| 亚洲欧洲在线一区| 欧美+亚洲+精品+三区| 国产又粗又猛大又黄又爽| 国产精品久久久久毛片大屁完整版| 久久精品一区二区三区四区| 久久九九视频| 一区二区国产精品精华液| 大陆极品少妇内射aaaaa| 久久精品亚洲无码| 国产一区二区三区电影在线观看| 精品乱码一区| 国产一二区在线观看| 91精品国产综合久久久蜜臀图片| 国产精品一级| 亚洲国产日韩精品在线| 亚洲v片在线观看| 国产精品怡红院| 乱中年女人av三区中文字幕| 亚洲一区 二区 三区| 成人精品视频在线播放| 午夜在线视频一区二区区别| 中文字幕在线中文字幕二区| 国产网红在线观看| 香蕉视频网站在线观看| 国产一区二区三区在线观看网站| 久久综合亚洲色hezyo国产| 精品一区二区三区免费爱| 中文字幕欧美日韩在线| 九色丨porny丨自拍入口| 亚洲2020天天堂在线观看| 精品无码国产一区二区三区51安| 免费欧美激情| 欧美午夜一区二区三区免费大片| 亚洲国产裸拍裸体视频在线观看乱了中文| 狠狠躁天天躁日日躁欧美| 91免费观看视频| 第四色婷婷基地| 少妇精品无码一区二区免费视频| 高清一区二区三区四区五区| 宅男深夜免费观看视频| 性国产高清在线观看| 欧美二级三级| 国产区视频在线播放| 国产激情视频在线观看| 色欲av无码一区二区三区| 91短视频在线| 少妇高潮惨叫久久久久| 亚州av中文字幕在线免费观看| 制服.丝袜.亚洲.中文.综合懂色| 极品美女销魂一区二区三区免费| 美女扒开腿让男人桶爽久久软| 91精品国产乱码久久久久久蜜臀| 国产亚洲一区二区手机在线观看| 在线播放av中文字幕| 天堂视频在线观看免费| 导航福利在线| 99热在线观看免费| 2018高清国产日本一道国产| av高清久久久| 少妇免费毛片久久久久久久久| 国产日韩在线观看视频| 亚洲精品第一国产综合精品| 精品国精品自拍自在线| 欧美日韩在线亚洲一区蜜芽| 成人av电影免费在线播放| 日韩一区二区视频| 日韩精品视频网| 18+激情视频在线| 亚洲综合日韩在线| 欧美日韩精品一区二区| 国内精久久久久久久久久人| 69视频免费在线观看| 国产精品白丝av| 黄色污网站在线免费观看| 99久久无色码| 亚洲 日本 欧美 中文幕| 国产伦理吴梦梦伦理| 欧美丰满高潮xxxx喷水动漫| www.91av| 一区二区精品免费视频| 欧美日韩另类字幕中文| 中国特级黄色片| 亚洲欧美日韩精品久久久久| 91精品黄色| 亚洲女娇小黑人粗硬| 黄色国产在线| 自拍偷拍色综合| 日韩精品福利网| 玖玖玖视频精品| 中文字幕高清在线播放| 欧美18一14sex性处hd| 91久久久久久白丝白浆欲热蜜臀| 国产精品国产福利国产秒拍| av电影免费在线观看| 色阁综合av| www.午夜精品| 天天色天天综合| 伊人久久av导航| 香蕉伊大人中文在线观看| 欧美日本亚洲视频| 色婷婷国产精品久久包臀| 香蕉视频在线网址| 成人xvideos免费视频| 欧美激情精品久久久久久免费印度| 在线观看视频在线观看| 亚洲一区免费看| 欧美尺度大的性做爰视频| 中文字幕在线视频免费观看| 午夜视频在线观看精品中文| 97netav| 四虎精品欧美一区二区免费| 国产成人无码av| 国产成人福利在线| 久久久不卡影院| 久久久亚洲精品无码| 国产精品1024久久| 第四色婷婷基地| 激情视频在线观看免费| 天天干天天干天天干| 91免费看`日韩一区二区| jizzjizzjizz亚洲日本| 亚洲成人久久精品| 国产精品色噜噜| 最新成人av网站| 欧美人动与zoxxxx乱| 久久久久亚洲av无码专区| 中文字幕123| 日韩在线中文字幕| 麻豆传媒在线看| 粉嫩av性色av蜜臀av网站| 老司机成人免费视频| 又黄又骚的视频| 日本免费在线一区| 久久精品国产亚洲av香蕉| 日韩在线不卡| 色狮一区二区三区四区视频| 中文字幕在线观看一区| 午夜影院在线播放| 免费成人深夜夜行网站| 好吊妞视频一区二区三区| 极品盗摄国产盗摄合集| 国产69精品久久久久久久| 欧美性猛交xxxx乱大交| 欧美freesex交免费视频| 免费一级片视频| 高清国产在线观看| 国产精品乱人伦中文| 小泽玛利亚一区二区免费| 久久久久久久久久久久久久久久久久久| 中文一区二区视频| 91麻豆精品国产综合久久久久久| 精品国产乱码久久久久久虫虫漫画| 中文字幕中文字幕在线一区| 中文av字幕在线观看| 韩国中文免费在线视频| 91蝌蚪国产九色| 在线影院国内精品| 精品欧美一区二区在线观看视频| 日韩城人网站| 91午夜视频在线观看| 女同互添互慰av毛片观看| 欧美黄色网视频| 狠狠色丁香久久婷婷综合丁香| 538在线精品| 亚洲精品美女久久久久| 午夜影院久久久| 成人黄网大全在线观看| 精品无码一区二区三区电影桃花| 先锋影音资源综合在线播放av| 日韩av三级在线观看| av女同在线| 国产精品99久久精品| 精油按摩中文字幕久久| 电影天堂av在线| 中文字幕资源在线观看| 91青青国产在线观看精品| 污网站在线免费| 国产欧美日韩精品a在线观看|