常見的幾種vs2012除錯技巧
轉自:http://www.cnblogs.com/lazycoding/archive/2012/10/03/2710738.html
介紹
除錯是軟體開發週期中的一個很重要的部分,有時很有挑戰性,有時候則讓程式設計師迷惑,有時候讓程式設計師發瘋,但是。可以肯定的是,對於任何不是太那個微不足道的程式來說,除錯是不可避免的。近年來,除錯工具的發展已經使得很多除錯任務簡單省時了。
本文總結了十個除錯技巧,當你使用VS的時候可以節省你很多時間。
1.懸停滑鼠查看錶達式
除錯有時候很有挑戰性,當你步入一個函式想看看哪塊出錯的時候,檢視呼叫棧來想想值是從哪來的。另一些情況下,則需要新增一些監視表示式,或者檢視區域性變數列表,這通常還是花費一些時間的,但是。如果你把你滑鼠指向你感興趣的一個變數。你會發現事情簡單多了。而且,類和結構體可以通過單擊展開。這樣。你就可以方便快捷的找到你想檢視的變量了。
2實時改變值
偵錯程式不僅僅是一個分析程式崩潰或是異常結果的工具了,許多bug都可以通過步入新寫的函式,檢查函式是否如期望的那樣執行來預防。有時候你可能會好奇“如果條件為真函式會正確執行嗎”大多數情況下,根本不需要改變程式碼重啟挑起,僅僅把滑鼠懸停到一個變數上,雙擊值然後輸入一個新值就可以了。。
3.設定下一條語句
一個典型的除錯情況就是通過單步跟蹤分析為什麼一個函式呼叫失敗了。當你發現一個函式呼叫的另一個函式返回錯誤的時候你會怎麼做?重啟除錯?有更好的方法。拖動這個黃色的語句標識到你想下一步執行的語句前就可以了。比如你剛才失敗的那塊,然後步入。簡單,不是嗎?
4.編輯然後繼續
除錯一個複雜的程式,或是一個外掛的時候,在一個被呼叫很多次的函式處發現一個錯誤。但是不想浪費時間停下來,重新編譯然後重新除錯。沒問題,僅僅在該處改正程式碼然後繼續單步就可以。VS會修正程式然後繼續除錯不需要重啟
注意,編輯然後繼續有大量的已知限制,首先,64位程式碼是不行的。如果他如果為你的C#程式工作。就去工程設定的生成選項,然後目標平臺為x86.不要擔心。釋出版的目標平臺和除錯的時候是分開的。可以被設定為任何平臺。。
第二.編輯然後繼續改變在一個方法裡應該是區域性的。。如果你改變了方法簽名,新增一些新方法或是類。你就不得不重啟程式了。或者撤銷改變來繼續。改變方法也包含lambda表示式隱式修改的自動生成的代理類,因此也不能繼續。
5.方便的監視視窗
大概現代的偵錯程式都有一個監視視窗,無論如何。VS允許你簡單的新增或移除變數。單擊空行,輸入你的表示式按下回車,或者是在不需要的表示式上按下Delete鍵就可以刪除了。
而且。從監視視窗你不僅僅可以看到“正常”的變數。你可以輸入$handles 來追蹤你的程式打開了多少控制代碼(可以方便的修復記憶體洩漏),輸入$err 可以看到上一個函式的錯誤碼,然後使用工具-錯誤資訊可以看到更詳細的描述,或者輸入@eax(64位是@rax)來檢視包含函式返回值的暫存器。
6.帶註釋的反彙編
使用互動式的反彙編模式可以使得優化程式的關鍵部分變得很容易,VS給出對應你程式碼每一行的彙編指令,並且執行單步執行。同時,可以在任何位置設定斷點。而且,表示式的檢視和修改也像在C++程式碼裡一樣
7.帶有棧的執行緒視窗
除錯多執行緒的程式是痛苦的。。或者也可以是很有趣的。取決於你的偵錯程式。VS2010真正優美的特性是執行緒視窗的棧檢視,通過視窗的呼叫棧你可以方便的總覽執行緒。
8.條件斷點
如果你嘗試通過斷點再現一個罕見的事件,該情況引發了一些嚴重的錯誤。你可以新增條件斷點。定義一個斷點的條件,然後如果條件不成立,VS會忽略該斷點
9.記憶體視窗
有些bug由不正確的結構體定義引起,忽略的對齊屬性等等。檢視記憶體中的內容可以定位然後修復bug。VS提供了一個放百年的記憶體視窗,可以把值以8/16/32/64位的形式展示。還有浮點值。也允許實時改變他們。就像在文字編輯器裡一樣。
10.轉到定義
這個特性不是直接關於除錯的,而是關於瀏覽大專案的。如果你嘗試找到一些不是你自己寫的程式碼中的錯誤,快速知道“這個型別是什麼”或者“這個函式是幹嘛的”,可以節省很多時間,VS通過一個轉到定義命令方便了你。
11.命令視窗
第十一的技巧chaau已經建議過了。確實可以節省很多時間,VS支援命令視窗,可以通過,檢視-其他視窗-命令視窗來啟動。一旦啟用,你可以輸入不同的命令來自動化除錯。舉個例子。你可以通過如下命令 簡單的模擬MFC COleDateTime 變數。
? dt.Format("%Y-%m-%d %H:%M:%S")
相關推薦
常見的幾種vs2012除錯技巧
轉自:http://www.cnblogs.com/lazycoding/archive/2012/10/03/2710738.html 介紹 除錯是軟體開發週期中的一個很重要的部分,有時很有挑戰性,有時候則讓程式設計師迷惑,有時候讓程式設計師發瘋,但是。可以肯定的是
常見幾種瀏覽器相容性問題與解決方案
瀏覽器相容問題一:不同瀏覽器的標籤預設的外補丁和內補丁不同 問題症狀:隨便寫幾個標籤,不加樣式控制的情況下,各自的margin 和padding差異較大。 碰到頻率:100% 解決方案:CSS裡 *
java 常見幾種傳送http請求案例
<span style="font-family: Arial, Helvetica, sans-serif;">import java.io.BufferedReader;</span> import java.io.FileOutputS
阿里P7常用的幾個JavaScript除錯技巧
我們除錯Javascript一般會用到Chrome和Firefox的控制檯作為除錯工具,本文列出了幾條用於除錯Javascript的技巧,掌握它們,讓我們花更少的時間來解決錯誤和bug,從而提高開發效率。 1. debugger 除了console.log, debugger是我們最
Jfinal開發時,404常見幾種問題及解決辦法
報404錯誤時,有2種可能,一是html檔案沒找到,二是Action沒找到,歸結到底是路徑不對,或路徑對了,檔名或包名不符,特別注意,路徑名大小寫一定要一致!路徑名大小寫一定要一致!路徑名大小寫一定要一致! 1、先把Config,注意路由,如**.Controll
ajax的常見幾種寫法以及用法
一、服務端資料格式1.自定義po類package com.hbut.ssm.po; /** * pojo類 * */ public class Children { private Stri
常見幾種排序演算法的C++描述
首先看一下幾種常見排序的特性 插入排序 void insertSort(vector<int> & arr) { int sz = arr.size();
C語言中幾種輸出除錯資訊的方法
在除錯程式時,輸出除錯資訊是一種普遍、有效的方法。輸出除錯資訊一般有以下五種方法: 方法一:直接使用螢幕列印函式printf。 該方法直接在需要輸出除錯資訊的位置使用函式printf輸出相應的除錯資訊,以及某些關鍵變數的值。我們通過以下求階層的函式fact來看看該方法的除
常見幾種資料庫驅動和url書寫格式
oracle 驅動:oracle.jdbc.driver.OracleDriver URL:jdbc:oracle:thin:@localhost:1521:dbname mysql 驅動:com.mysql.jdbc.Driver URL:jdbc:mysql:/
python執行sql的常見幾種方式
#!/usr/bin/env python # -*- encoding : utf-8 -*- # author : liubin # file : cx_Oracle插入修改.py # time
Web常見幾種攻擊與預防方式
DoS(Denial of Service), 即拒絕服務,造成遠端伺服器拒絕服務的行為被稱為DoS攻擊 XSS
老司機常用的幾個JavaScript除錯技巧
1. debugger 除了console.log, debugger是我們最喜歡、快速且骯髒的除錯工具。執行程式碼後,Chrom
Thinkphp編程中幾種常見的實用技巧講解
要掌握 true 方法 ech admin 字段 status _id 同時 在Thinkphp編程中集成了很多用起來非常方便的方法。對於剛接觸的編程人員來說,可謂是只要掌握並靈活運用了,那麽就可以達到事半功倍的效果了,下面就來為大家詳細的講解一下。 1. getFie
Nginx小技巧——幾種常見實現301重定向方法上的區別
Nginx下常見的301跳轉有以下三種,雖然都能達到同樣的目的。但是三種寫法上還是有區別的,主要的區別是在正則匹配的效能上。 第一種:使用rewrite指令,通過正則匹配所有的URI後再去掉開頭第一個/(反斜線)。 rewrite ^/(.*)$ https://www.hi-linux.com/
即時通信常見的幾種方式,此處只做學習記錄
維護 時間 最簡 安裝 記錄 htm websocket 雙向 new 1. 輪詢 利用ajax每隔一段時間就請求一次服務器,服務器返回數據。 優點:最簡單的解決方案 缺點:對服務器壓力很大,浪費帶寬 2. 長輪詢 利用ajax請求服務器,當有數據變化
html中設置錨點定位的幾種常見方法
element 針對 htm com script int nbsp onclick .get 1,使用id定位: <a href="#1F" name="1F">錨點1</a> <div name="1F"> <p>
Linux 技巧:讓進程在後臺可靠執行的幾種方法
stl 選項 con 中斷 program ng- dem 不同 正在 我們常常會碰到這種問題。用 telnet/ssh 登錄了遠程的 Linux server,執行了一些耗時較長的任務, 結果卻因為網絡的不穩定導致任務中途失敗。怎樣讓命令提交後不受本地關閉終端
#19 子網掩碼的由來,與幾種常見的網絡協議
子網掩碼的由來 與幾種常見的網絡協議 子網掩碼: 對應的IP地址中,網絡位1,主機位0 IP地址和子網掩碼進行邏輯“與”運算,得到的結就是IP地址所對應的網絡地址; 主機(終端)使用子網掩碼的方式: 將本次通信的目標IP地址與本地IP地址所使用的子網掩碼進行邏輯“與”運算,同時
java基礎之幾種常見的排序算法
java基礎 csdn n) min center 最小 fill 順序 system 一,冒泡排序 1、原理: 從數組的第一個位置開始兩兩比較array[index]和array[index+1],如果array[index]大於array[index+1]則交換a
幾種常見的Shell
shell 分類 不同的shell具備不同的功能,shell還決定了腳本中函數的語法,linux中默認的shell是/bin/bash,流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特點以及用途。bash大多數linux系統默認使用的shell,bash sh