2008-11-07 102 views
17

我們很少人會否認調試器的出色,但爲了使它更有用,可以使用一些技巧。你最喜歡的虛線是什麼?

例如在Python中,你可以使用到什麼都不做,只是要離開你的房間放一個破發點,並允許您在監視窗口中觀察值。

在C#中,我用來做GC.Collect的(),但現在我用如果(假){}

什麼是你最好玩的虛擬線?

+0

爲什麼你會需要一個虛擬的線把一個斷點?何時不能使用實際行? – 2008-11-07 19:31:54

+0

查爾斯,一些線條被編譯出來,所以沒有地方放置斷點。但是,處於調試模式的.NET會在它們的位置插入一條NOP語句,因此您仍然可以打破它們。 – FlySwat 2008-11-07 19:37:32

+0

社區wiki? – 2009-08-13 05:06:07

回答

27

在C#中,你可以使用這個:

System.Diagnostics.Debugger.Break(); 

這將迫使一個斷點。

+1

這就是爲什麼我愛s.o. :) – Haoest 2008-11-07 19:52:14

+0

FWIW,它類似於JavaScript中的`debugger;`語句。 – orad 2014-01-20 22:51:50

+1

奇怪的是,這被接受爲答案,因爲它沒有解決實際的問題,這是關於可以放置斷點的線。強制斷點是一個完全不同的問題。 – 2016-04-15 07:48:19

1
在GCC

/克++:

assert("breakpoint"); 

因爲任何非0 /空值斷言被取爲真。

甚至

__asm__("nop"); 

至少我知道會有上發生斷點發出的指令字節。 ;)

5
volatile int e = 9; 

揮發性意味着,因爲我不讀的變量,編譯器將無法將其刪除。 '9',以便它不爲零。零對我的口味來說太常見了。

0

不是很複雜,但功能。

bool bp; 

bp = true; //whereever I need to break. 
0

在VB6中,我自己使用冒號。 :

1

我用

int x = 0; 

我總是確保我刪除此行,當我完成調試。

0

在C++中我使用

Sleep(0) 

有時,或者只是發現運作使用的變量,並將其分配給自己:

i = i; 
2

我沒寫過東西專門上破,但如果我這樣做,我會寫

int moot; 

我用這個時候有一些必要的「出」參數我就不說了關心但必須提供。

0

確實如此,如果VS2010調試器處於諸如分號之類的空語句上,它們會轉移斷點,這很奇怪。儘管它看起來像,但在調試版本中,您通常仍然可以在空的C#控制塊或分號上放置斷點,並且它會正確命中。這個被惹惱了一段時間後,我剛剛創建這個改用:

public static class Nop { public static void X() { } }; 

編輯:要使用它,把Nop.X()在你的代碼...

1

對於C/C++我使用

__asm int 3; 

這將在調試器將捕獲的那行代碼處生成斷點異常。但是一個警告是,如果你的程序沒有在調試器中運行,那麼它會崩潰。

9

在C#,Visual Studio中

{} 

; 
相關問題