我們很少人會否認調試器的出色,但爲了使它更有用,可以使用一些技巧。你最喜歡的虛線是什麼?
例如在Python中,你可以使用通到什麼都不做,只是要離開你的房間放一個破發點,並允許您在監視窗口中觀察值。
在C#中,我用來做GC.Collect的(),但現在我用如果(假){}
什麼是你最好玩的虛擬線?
我們很少人會否認調試器的出色,但爲了使它更有用,可以使用一些技巧。你最喜歡的虛線是什麼?
例如在Python中,你可以使用通到什麼都不做,只是要離開你的房間放一個破發點,並允許您在監視窗口中觀察值。
在C#中,我用來做GC.Collect的(),但現在我用如果(假){}
什麼是你最好玩的虛擬線?
Debug.Assert(true);,它會自動從發佈版本中編譯。
/克++:
assert("breakpoint");
因爲任何非0 /空值斷言被取爲真。
甚至
__asm__("nop");
至少我知道會有上發生斷點發出的指令字節。 ;)
volatile int e = 9;
揮發性意味着,因爲我不讀的變量,編譯器將無法將其刪除。 '9',以便它不爲零。零對我的口味來說太常見了。
不是很複雜,但功能。
bool bp;
bp = true; //whereever I need to break.
在VB6中,我自己使用冒號。 :
我用
int x = 0;
我總是確保我刪除此行,當我完成調試。
在C++中我使用
Sleep(0)
有時,或者只是發現運作使用的變量,並將其分配給自己:
i = i;
我沒寫過東西專門上破,但如果我這樣做,我會寫
int moot;
我用這個時候有一些必要的「出」參數我就不說了關心但必須提供。
確實如此,如果VS2010調試器處於諸如分號之類的空語句上,它們會轉移斷點,這很奇怪。儘管它看起來像,但在調試版本中,您通常仍然可以在空的C#控制塊或分號上放置斷點,並且它會正確命中。這個被惹惱了一段時間後,我剛剛創建這個改用:
public static class Nop { public static void X() { } };
編輯:要使用它,把Nop.X()在你的代碼...
對於C/C++我使用
__asm int 3;
這將在調試器將捕獲的那行代碼處生成斷點異常。但是一個警告是,如果你的程序沒有在調試器中運行,那麼它會崩潰。
在C#,Visual Studio中
{}
或
;
爲什麼你會需要一個虛擬的線把一個斷點?何時不能使用實際行? – 2008-11-07 19:31:54
查爾斯,一些線條被編譯出來,所以沒有地方放置斷點。但是,處於調試模式的.NET會在它們的位置插入一條NOP語句,因此您仍然可以打破它們。 – FlySwat 2008-11-07 19:37:32
社區wiki? – 2009-08-13 05:06:07