2012-04-15 169 views
0

我在微軟網站上發現,如果我想逐行調試一個程序,我需要按F11。 如果我按F11我獲得(在一個名爲Program.cs的新形式):在c#中逐行調試#

 using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Windows.Forms; 

    namespace WindowsFormsApplication1 
    { 
     static class Program 
    { 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
    } 
    } 

他們補充說,「當通過代碼,也就是即將被執行加亮線步進」。在我的情況下突出顯示:

 Application.EnableVisualStyles(); 

我應該選擇另一條線嗎?

然後,他們告訴選擇停止調試以使代碼編輯器可寫。

如果我按照此步驟操作,則看不到任何修改。我應該看到一個新的表單,其中的計算機逐行調試?我應該做另一件事嗎?

對不起,如果我的問題看起來很愚蠢。請理解我,我是C#的開始。

非常感謝!

+0

請參閱http://www.hermetic.ch/cfunlib/debug.htm適用於VS也 – 2012-04-15 16:06:02

+0

您確定您明白「調試」代表什麼嗎?你究竟想達到什麼目的? – walther 2012-04-15 16:07:39

+0

我正試圖實現一個「指令說明」。我沒有用這種調試方式工作,所以我什麼都不知道。由於每個人的幫助,現在我知道使用它。 – Bogdan 2012-04-15 20:27:25

回答

0

您應該標記一個調試點(或斷點),然後開始調試您的程序。在我看來,不建議您逐行開始調試程序,您應該只調試引發異常的部分,並在程序中標記斷點(如何:http://msdn.microsoft.com/en-us/library/k80ex6de.aspx)。當您的程序到達該行時,如果需要,調試器會逐行開始詳細的調試。

+0

謝謝你的幫助! – Bogdan 2012-04-15 18:47:18

2

您的問題有較少與具體語言(標記中的C#)有關,更多關於Visual Studio環境。

F11執行逐行,但指令逐instruciton,因爲如果你immagin這樣的代碼:

if(condition) { x++; DoSomething(); ...},對F11按下它不會活蹦亂跳這條線,但仍然執行

  • 第一if
  • x++
  • DoSomething(..)

而這一切是在你的代碼在同一行,但對於編譯這些都是不同的指令。

如果您想讓編輯器可編輯,按下Pause按鈕即可。但是,通過點擊按鈕Pause,在情況下,如果在當前函數的範圍沒有任何lambda的表情,你就可以改變代碼只是在Pause,他們稱這個功能Edit and Continue

希望這有助於。

+0

這就是我想要的:按指令執行指令。我插入一個簡單的斷點,我按了F11但我沒有看到我的變量的狀態。我在哪裏可以看到它? – Bogdan 2012-04-15 17:59:05

+0

您可以在[WatchWindow](http://msdn.microsoft.com/zh-cn/library/0taedcee.aspx)中通過拖放或寫入變量[Locals Window](http:// msdn。 microsoft.com/en-us/library/a6td98xe(v=vs.100).aspx),或者當程序處於暫停狀態時,通過鼠標懸停在當前執行範圍內的任何變量上,您將看到工具提示 - 窗口。 – Tigran 2012-04-15 18:26:37

+0

非常感謝!我找到了! – Bogdan 2012-04-15 18:42:23

1

我認爲你需要調試是如何工作的一些建議:

首先,你應該插入一個簡單斷點(F9在Visual Studio)在要調試代碼的某個地方。假設您有一個Windows窗體應用程序,並帶有名爲Form1的窗體。在這種形式中,你有一個按鈕,當點擊時,它做了一些事情。您將有這樣的事情:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     doSomething(...); 
    } 
} 

要停止當您單擊按鈕,程序的執行(這樣你就可以清楚地看到發生了什麼),你可以把一個斷點上的click事件。一旦你有了斷點,每次點擊事件被觸發,程序就會停止,你將能夠一步一步地運行它。

通過逐步運行它,您可以看到變量的狀態和存儲的數據。因此,您可以找到您的代碼開始行爲與預期不同的位置(通常稱爲a bug)。

爲了這樣做,則可以通過程序程序由程序F10)或通過指令(F11指令步驟。 F10會跳過函數調用,執行它們直到完成。 F11將進入函數調用,逐步執行其中的每條指令。

+0

我按照你的步驟,直到我按下F11。然後,我從button1_Click獲得的第一條指令突出顯示。在哪裏可以看到我的變量的狀態?謝謝! – Bogdan 2012-04-15 17:46:47

+0

停止時,可以單擊調試> Windows>自動顯示範圍的數據。我不確定是否這樣叫,因爲我有西班牙語的VS,而不是英語 – vguzmanp 2012-04-15 17:56:11

+0

以防萬一它有幫助,下面是我的版本中的樣子:[link](http://i.imgur.com/ yKeLG.jpg) – vguzmanp 2012-04-15 18:02:26